[发明专利]一种检测内存泄漏的方法和装置有效
申请号: | 201710717478.X | 申请日: | 2017-08-21 |
公开(公告)号: | CN107632929B | 公开(公告)日: | 2020-06-05 |
发明(设计)人: | 李海峰 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张一军;杨晓伟 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 内存 泄漏 方法 装置 | ||
本发明公开了一种检测内存泄漏的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:模拟应用程序的运行过程;执行内存清理以及将清理后的内存状态保存为内存镜像文件;根据所述内存镜像文件建立待检测对象之间的映射关系;根据所述映射关系判断所述待检测对象是否为清理后内存中应当存在的对象以判断是否发生了内存泄漏。该实施方式能够实现对内存泄漏的自动化检测,提高检测效率并降低人力成本。
技术领域
本发明涉及计算机技术领域,尤其涉及一种检测内存泄漏的方法和装置。
背景技术
内存泄漏是指程序中己动态分配的堆内存由于某种原因在使用完毕后未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加,因此需要对内存泄漏进行有效的检测,以便开发人员对程序进行优化。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:现有的对应用程序的内存泄漏进行检测的方式是人工分析内存镜像文件,根据内存镜像文件的信息判断出现内存泄漏的位置。在应用程序发版密集的情况下,对每个新版本都要人工重新检测内存泄漏情况,检测效率较低,且会消耗开发人员大量的时间和精力。
发明内容
有鉴于此,本发明实施例提供一种检测内存泄漏的方法和装置,能够实现对内存泄漏的自动化检测,提高检测效率并降低人力成本。
为实现上述目的,根据本发明实施例的一个方面,提供了一种检测内存泄漏的方法,包括:
模拟应用程序的运行过程;
执行内存清理以及将清理后的内存状态保存为内存镜像文件;
根据所述内存镜像文件建立待检测对象之间的映射关系;
根据所述映射关系判断所述待检测对象是否为清理后内存中应当存在的对象以判断是否发生了内存泄漏。
可选的,所述待检测对象包括父对象和与所述父对象对应的子对象;根据所述映射关系判断所述待检测对象是否为清理后内存中应当存在的对象以判断是否发生了内存泄漏的步骤包括:
判断所述父对象是否为清理后内存中应当存在的对象;
若不是,则根据所述映射关系判断是否存在与所述父对象对应的子对象;
若存在,则确定所述子对象发生内存泄漏。
可选的,根据所述内存镜像文件建立待检测对象之间的映射关系的步骤包括:
在所述内存镜像文件中查找父对象与父对象标识码的对应关系,以及查找子对象与子对象标识码的对应关系;
确定与父对象对应的子对象;
建立第一映射项,所述第一映射项含有子对象以及与所述子对象对应的子对象标识码;
建立第二映射项以保存子对象与父对象的映射关系,所述第二映射项含有父对象标识码以及包含所述父对象对应子对象的第一映射项。
可选的,所述父对象包括类,所述子对象包括所述类的实例。
可选的,所述父对象包括Activity类或其子类,所述子对象包括Activity类的实例或Activity类的子类的实例。
可选的,述待检测对象包括父对象和与所述父对象对应的子对象;根据所述映射关系判断所述待检测对象是否为清理后内存中应当存在的对象以判断是否发生了内存泄漏的步骤包括:
判断所述子对象是否满足预设的泄漏条件;
若满足,则根据所述映射关系判断是否存在与所述子对象对应的父对象,以及所述父对象是否为预设对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710717478.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:卧式搅拌罐的密封装置
- 下一篇:一种适合机械自动插引的组合烟花