[发明专利]一种检测内存泄漏的方法和装置有效
申请号: | 201710717478.X | 申请日: | 2017-08-21 |
公开(公告)号: | CN107632929B | 公开(公告)日: | 2020-06-05 |
发明(设计)人: | 李海峰 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张一军;杨晓伟 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 内存 泄漏 方法 装置 | ||
1.一种检测内存泄漏的方法,其特征在于,包括:
模拟应用程序的运行过程;
执行内存清理以及将清理后的内存状态保存为内存镜像文件;
根据所述内存镜像文件建立待检测对象之间的映射关系,所述待检测对象包括父对象和与所述父对象对应的子对象;
根据所述映射关系判断所述待检测对象是否为清理后内存中应当存在的对象以判断是否发生了内存泄漏。
2.根据权利要求1所述的方法,其特征在于,根据所述映射关系判断所述待检测对象是否为清理后内存中应当存在的对象以判断是否发生了内存泄漏的步骤包括:
判断所述父对象是否为清理后内存中应当存在的对象;
若不是,则根据所述映射关系判断是否存在与所述父对象对应的子对象;
若存在,则确定所述子对象发生内存泄漏。
3.根据权利要求2所述的方法,其特征在于,根据所述内存镜像文件建立待检测对象之间的映射关系的步骤包括:
在所述内存镜像文件中查找父对象与父对象标识码的对应关系,以及查找子对象与子对象标识码的对应关系;
确定与父对象对应的子对象;
建立第一映射项,所述第一映射项含有子对象以及与所述子对象对应的子对象标识码;
建立第二映射项以保存子对象与父对象的映射关系,所述第二映射项含有父对象标识码以及包含所述父对象对应子对象的第一映射项。
4.根据权利要求2或3所述的方法,其特征在于,所述父对象包括类,所述子对象包括所述类的实例。
5.根据权利要求4所述的方法,其特征在于,所述父对象包括Activity类或其子类,所述子对象包括Activity类的实例或Activity类的子类的实例。
6.根据权利要求1所述的方法,其特征在于,根据所述映射关系判断所述待检测对象是否为清理后内存中应当存在的对象以判断是否发生了内存泄漏的步骤包括:
判断所述子对象是否满足预设的泄漏条件;
若满足,则根据所述映射关系判断是否存在与所述子对象对应的父对象,以及所述父对象是否为预设对象;
若父对象存在且是所述预设对象,则判断所述子对象是否为清理后内存中应当存在的对象;
若不是,则确定所述子对象发生泄漏。
7.根据权利要求6所述的方法,其特征在于,根据所述内存镜像文件建立待检测对象之间的映射关系的步骤包括:
在所述内存镜像文件中查找子对象与子对象标识码的对应关系;
查找父对象包含的成员变量;
根据所述成员变量确定父对象与子对象的对应关系;
建立第三映射项以保存子对象与父对象的映射关系,所述第三映射项含有子对象标识码以及与所述子对象对应的父对象。
8.根据权利要求6或7所述的方法,其特征在于,所述父对象包括实例,所述子对象包括与所述实例对应的、以数组形式存储的数据。
9.根据权利要求8所述的方法,其特征在于,所述父对象包括Bitmap类的实例或Bitmap类的子类的实例,所述子对象包括与所述Bitmap类或所述Bitmap类的子类所对应的Byte数组。
10.一种检测内存泄漏的装置,其特征在于,包括:
模拟运行模块,用于模拟应用程序的运行过程;
文件保存模块,用于执行内存清理以及将清理后的内存状态保存为内存镜像文件;
映射模块,用于根据所述内存镜像文件建立待检测对象之间的映射关系,所述待检测对象包括父对象和与所述父对象对应的子对象;
泄漏检测模块,用于根据所述映射关系判断所述待检测对象是否为清理后内存中应当存在的对象以判断是否发生了内存泄漏。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710717478.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:卧式搅拌罐的密封装置
- 下一篇:一种适合机械自动插引的组合烟花