[发明专利]应用程序内存泄露检测方法、装置、电子设备及存储介质在审
申请号: | 201811152539.3 | 申请日: | 2018-09-29 |
公开(公告)号: | CN109558308A | 公开(公告)日: | 2019-04-02 |
发明(设计)人: | 黄小婷 | 申请(专利权)人: | 中国平安人寿保险股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/50 |
代理公司: | 深圳市赛恩倍吉知识产权代理有限公司 44334 | 代理人: | 杨毅玲 |
地址: | 518000 广东省深圳市福田区益田路503*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用程序内存 应用程序 引用 存储介质 电子设备 内存快照 内存泄漏 泄露检测 监听器 检测 定位应用程序 泄露检测装置 应用程序运行 安全监控 对象封装 垃圾回收 引用对象 准确度 回收 监听 触发 分析 上报 创建 优化 | ||
1.一种应用程序内存泄露检测方法,应用于电子设备中,其特征在于,所述方法包括:
为每一个应用程序创建一个弱引用监听器;
当有应用程序运行时,通过所述弱引用监听器监听对应的应用程序的Activity对象;
将所述Activity对象封装为弱引用对象;
检测所述Activity对象的弱引用是否存在;
当确定所述Activity对象的弱引用存在时,触发垃圾回收机制,并对所述Activity对象进行标记;
检测所述Activity对象是否被回收;
当检测到所述Activity对象没有被回收时,获取所述应用程序的内存快照文件;
根据所述内存快照文件进行内存泄漏分析后生成分析报告并进行上报。
2.如权利要求1所述的方法,其特征在于,所述将Activity对象封装为弱引用对象包括:
使用关键字WeakReference将所述Activity对象封装为带key值和带引用队列的弱引用对象,其中,所述key值用于定位发生内存泄漏的对象,所述引用队列用于监控弱引用回收。
3.如权利要求1所述的方法,其特征在于,当检测所述Activity对象的弱引用不存在时,所述方法包括:
确定所述Activity对象没有发生内存泄漏。
4.如权利要求1所述的方法,其特征在于,在所述对Activity对象进行标记之后,所述方法还包括:
再检测所述Activity对象的弱引用是否存在;
当确定所述Activity对象的弱引用存在时,触发垃圾回收机制,并对所述Activity对象再进行一次标记。
5.如权利要求1所述的方法,其特征在于,所述内存快照文件包含了对象引用的所有路径,
所述根据所述内存快照文件进行内存泄漏分析包括:
根据所述内存快照文件中的路径找出发生内存泄漏的对象;
判断发生内存泄漏的对象与内存泄漏堆栈中的内存泄漏对象是否一致;
若发生内存泄漏的对象与内存泄漏堆栈中的内存泄漏对象不一致时,将发生内存泄漏的对象标识为不重复的内存泄漏对象,并记录于所述内存泄漏堆栈中。
6.如权利要求5所述的方法,其特征在于,若发生内存泄漏的对象与内存泄漏堆栈中的内存泄漏对象一致时,所述方法还包括:
将发生内存泄漏的对象标识为重复的内存泄漏对象,并进行去重操作。
7.如权利要求5所述的方法,其特征在于,所述判断发生内存泄漏的对象与内存泄漏堆栈中的内存泄漏对象是否一致包括:
计算所述发生内存泄漏的对象的字符串与所述内存泄漏堆栈中的内存泄漏对象的字符串的相似度;
判断计算的相似度是否大于预设相似度阈值;
当计算的相似度大于或者等于所述相似度阈值时,确定所述发生内存泄漏的对象与所述内存泄漏堆栈中的内存泄漏对象一致;
当计算的相似度小于所述相似度阈值时,确定所述发生内存泄漏的对象与所述内存泄漏堆栈中的内存泄漏对象不一致。
8.一种应用程序内存泄露检测装置,运行于电子设备中,其特征在于,所述装置包括:
创建模块,用于为每一个应用程序创建一个弱引用监听器;
监听模块,用于当有应用程序运行时,通过所述弱引用监听器监听对应的应用程序的Activity对象;
封装模块,用于将所述Activity对象封装为弱引用对象;
检测模块,用于检测所述Activity对象的弱引用是否存在;
标记模块,用于当所述检测模块确定所述Activity对象的弱引用存在时,触发垃圾回收机制,并对所述Activity对象进行标记;
所述检测模块,还用于检测所述Activity对象是否被回收;
获取模块,用于当所述检测模块检测到所述Activity对象没有被回收时,获取所述应用程序的内存快照文件;
分析模块,用于根据所述内存快照文件进行内存泄漏分析后生成分析报告并进行上报。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国平安人寿保险股份有限公司,未经中国平安人寿保险股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811152539.3/1.html,转载请声明来源钻瓜专利网。