[发明专利]内存泄漏的检测方法和装置在审
申请号: | 202010621262.5 | 申请日: | 2020-06-30 |
公开(公告)号: | CN111858317A | 公开(公告)日: | 2020-10-30 |
发明(设计)人: | 程锦;梁沙沙 | 申请(专利权)人: | 北京金山云网络技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京博遵律师事务所 11761 | 代理人: | 马佑平 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 泄漏 检测 方法 装置 | ||
本公开的实施例涉及内存泄漏的检测方法、分布式服务的测试方法、内存泄漏的检测装置、计算机可读存储介质。所述检测方法包括:获取预设时间段内服务进程的使用内存值和所述服务进程管理的内部数据结构的使用内存值;基于所述服务进程的使用内存值和/或所述内部数据结构的使用内存值,判断所述服务进程的内存是否发生泄漏。本公开的实施例提供的内存泄漏的检测方法,能够准确检测内存泄漏,降低内存泄漏导致的风险。
技术领域
本发明涉及计算机技术,尤其涉及内存泄漏的检测方法、分布式服务的测试方法、内存泄漏的检测装置、计算机可读存储介质。
背景技术
随着硬件技术的不断革新,内存的性价比逐渐提升,服务器的内存越来越大,内存慢慢不再成为分布式服务中的一个稀缺资源,未来分布式服务全内存化的趋势越来越明显。全内存化能够有效提升分布式服务的性能,但是出现内存泄漏的潜在风险也会随之增大。
内存泄漏(Memory Leak)是指程序里动态申请的内存空间在使用完毕之后没有被正确释放,导致这部分内存依然处于被占用的状态,没有被系统正常回收。内存泄漏会造成系统内存的浪费,还有可能会导致程序运行速度减慢甚至系统崩溃的严重后果。
在分布式服务中,可以查看集群中各服务器实际使用内存的情况,如果某台服务器实际使用内存过高,认为这台服务器可能发生了内存泄漏,这种检测内存泄漏的方式无法定位到出现内存泄漏的具体的服务进程。或者,也可以查看服务器上有哪些服务进程在运行以及这些服务进程实际使用内存的情况,将其中实际使用内存比较高的服务进程确定为出现内存泄漏的服务进程,但是,服务进程使用内存过高还可能与集群采用的负载均衡算法等其它因素有关,因此这种检测内存泄漏的方式的准确度不高。
因此,有必要提出一种能够较为精确地检测出内存泄漏的方案。
发明内容
本公开的目的在于提供一种能够准确检测内存泄漏的方案,以降低内存泄漏导致的风险。
根据本公开的第一方面,提供了一种内存泄漏的检测方法,包括:
获取预设时间段内服务进程的使用内存值和所述服务进程管理的内部数据结构的使用内存值;
基于所述服务进程的使用内存值和/或所述内部数据结构的使用内存值,判断所述服务进程的内存是否发生泄漏。
可选地,所述获取预设时间段内服务进程的使用内存值和所述服务进程管理的内部数据结构的使用内存值包括:获取服务进程在启动时刻的使用内存值和所述服务进程管理的内部数据结构在启动时刻的使用内存值。
可选地,所述基于所述服务进程的使用内存值和/或所述内部数据结构的使用内存值,判断所述服务进程的内存是否发生泄漏,包括:
计算第一变化率和第二变化率,所述第一变化率是所述服务进程的使用内存值在所述预设时间段内的变化率,所述第二变化率是所述内部数据结构的使用内存值在所述预设时间段的变化率;
确定所述第一变化率和所述第二变化率的差值是否在预设的第一区间内;
如果不是,判断所述服务进程的内存发生泄漏。
可选地,所述基于所述服务进程的使用内存值和/或所述内部数据结构的使用内存值,判断所述服务进程的内存是否发生泄漏,包括:
判断所述服务进程的使用内存值和所述内部数据结构的使用内存值在所述预设时间段内的变化是否同步;
如果不同步,判断所述服务进程的内存发生泄漏。
可选地,所述获取预设时间段内服务进程的使用内存值和所述服务进程管理的内部数据结构的使用内存值,包括:
检测预设时间段内所述服务进程的使用内存值占整机内存值的比例是否超过预设的比例阈值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京金山云网络技术有限公司,未经北京金山云网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010621262.5/2.html,转载请声明来源钻瓜专利网。