[发明专利]内存泄漏分析方法和装置有效
申请号: | 201610835770.7 | 申请日: | 2016-09-20 |
公开(公告)号: | CN106407114B | 公开(公告)日: | 2017-12-15 |
发明(设计)人: | 何纯;薛艳;薛阳;李奇峰;魏学峰 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙)44285 | 代理人: | 王仲凯 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 泄漏 分析 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存泄漏分析方法和装置。
背景技术
内存泄漏,也称作“存储渗漏”,指的是程序在运行过程中动态申请的内存空间不再使用后没有及时释放,导致对象一直占据该内存单元的现象。
目前针对程序的内存泄漏检查工具中主要使用了内存快照对比的方法。具体的,测试人员在对程序测试过程中每隔预置时间抓取内存分配操作的快照,并通过人工查找出相邻两次内存快照之间的差异,来找出那些没释放的内存块。然而,采用该种方法来检查内存泄漏需要测试人员对获取内存快照的时间的把握以及对业务有一定程度的了解,人工成本较高,而且获取内存快照的时间点容易出错,在设计上用作缓存的内存和没有及时释放的内存会被误判为泄漏的内存。
发明内容
本发明实施例提供了一种内存泄漏分析方法和装置,能够提高内存泄漏分析的正确率和效率。
第一方面,本发明提供一种内存泄露分析方法,包括:
获取待分析数据,所述待分析数据包括内存块列表和指针根节点列表,其中,所述内存块列表包括目标程序在运行结束时未被释放的内存块的信息,所述内存块为在所述目标程序运行期间堆和栈内被分配给所述目标程序的内存块,所述指针根节点列表包括至少一个指针根节点;
执行以下步骤A或者步骤B:
步骤A:分别以所述待分析数据的指针根节点列表中的各指针根节点为起点,遍历所述内存块列表中的内存块;获取内存泄漏分析结果,所述内存泄漏分析结果包括泄漏的内存块,所述泄漏的内存块为所述待分析数据中未被遍历到的内存块;
步骤B:将所述待分析数据发送给服务器,以便所述服务器根据所述待分析数据获取内存泄漏分析结果。
第二方面,本发明提供一种内存泄露分析装置,包括:
获取模块,用于获取待分析数据,所述待分析数据包括内存块列表和指针根节点列表,其中,所述内存块列表包括目标程序在运行结束时未被释放的内存块的信息,所述内存块为在所述目标程序运行期间堆和栈内被分配给所述目标程序的内存块,所述指针根节点列表包括至少一个指针根节点;
处理模块,用于执行以下步骤A或者步骤B:
步骤A:分别以所述待分析数据的指针根节点列表中的各指针根节点为起点,遍历所述内存块列表中的内存块;获取内存泄漏分析结果,所述内存泄漏分析结果包括泄漏的内存块,所述泄漏的内存块为所述待分析数据中未被遍历到的内存块;
步骤B:将所述待分析数据发送给服务器,以便所述服务器根据所述待分析数据获取内存泄漏分析结果。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明中,通过获取在目标程序的整个运行期间被分配且未释放的内存块列表,并以指针根节点列表为起点,对该内存块列表中的内存块进行遍历,若存在没遍历到的内存块即可确定为泄漏的内存块,在该方法中无需人工查找泄漏的内存块,而是实现自动化查找泄漏的内存块,而且采用该方法不仅能抓到逻辑代码的泄漏,而且能抓到系统函数、系统DLL和第三方库里的内存泄漏,对泄漏的内存块定位的准确率较高。
附图说明
图1为本发明的内存泄漏分析方法的一个实施例的流程示意图;
图2为本发明的内存泄漏分析方法的另一个实施例的流程示意图;
图3为本发明的内存泄漏分析系统的一个实施例的结构框架图;
图4为检测工具的一个实施例的结构示意图;
图5为本发明的内存泄露分析装置的一个实施例的结构示意图;
图6为本发明的内存泄露分析装置的另一个实施例的结构示意图;
图7为本发明的内存泄露分析装置的另一个实施例的结构示意图;
图8为本发明的内存泄露分析装置的另一个实施例的结构示意图;
图9为本发明的终端的一个实施例的结构示意图;
图10为本发明的服务器的一个实施例的结构示意图。
具体实施方式
请参阅图1,图1为本发明的内存泄漏分析方法的一个实施例的流程示意图。本实施例中,内存泄漏分析方法包括:
101、获取待分析数据,所述待分析数据包括内存块列表和指针根节点列表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610835770.7/2.html,转载请声明来源钻瓜专利网。