Ⅰ 如何快速定位android app是否存在内存泄露
确定是否存在内存泄露及具体是哪个程序造成,首先需要关注的是内存泄露已弹出out of memory对话框的情况。这种情况下,直接通过对话框即可得知是哪个应用的问题,然后再进一步分析该应用是否因内存泄露而导致了out of memory对话框的弹出。可以通过阅读相关文档如《如何诊断Android应用中的内存泄露》中介绍的各种方法进行分析,确定是否有内存泄露以及具体是哪个进程造成的内存泄露。
生成hprof文件并使用MAT进行分析是另一种有效的手段。生成hprof文件可以通过在DDMS中选中进程并点击窗口左上角的mp hprof file按钮直接生成,或者通过在程序中添加特定代码来生成。推荐使用代码生成hprof,然后使用《Android内存泄露利器(hprof篇)》中的工具自动提取多个hprof文件,然后使用MAT进行比较分析。在MAT中导入.hprof文件后,MAT会自动解析并生成报告,通过点击Dominator Tree,并按照Package进行分组,选择自己定义的Package类,比较各个类在不同时期的RetainedHeap,找出可疑类。然后选择该类,右键点击,选择show retained Set项,查看Retained Heap的详细信息,进一步找出嫌疑项。
在代码中查找内存泄露的具体原因,根据在MAT找到的内存泄露信息,可以参照《Android内存泄漏简介》进一步在代码中查找内存泄露的原因并进行修复。如果代码相对简单,也可以直接根据《Android内存泄漏简介》中的内容,在代码中查找内存泄露的原因并解决。