Android 内存泄漏分析定位(profiler+MAT)

(仅个人记录学习笔记)

第一步:准备Android Studio,MAT(Memory Analyzer)

MAT下载安装地址:https://www.eclipse.org/mat/


下载解压后,点击应用启动

如果出现此弹窗,参照:https://blog.csdn.net/aruewds/article/details/121490618

替换

添加本地高版本的jdk路径

第二步:使用Android Studio 自带工具 profiler 抓取内存快照


从SESSIONS中选择要分析的APP进程。

第三步:双击MEMORY


第四步:选择Capture heap dump ,点击 Record.



双击1, 选择 Arrange by class, 


可以看到 提示此处有内存泄漏,


点击保存改Heap Dump 到自己的电脑


第五步:转换hprof文件

由于该hprof文件使用Android Studio 生成,如果直接使用MAT打开会报错,所有需要将该文件进行一步转换。

转换工具使用SDK下platform-tools下的hprof-conv.exe (可以将platform-tools配置在环境变量下)


在生成的1.hprof文件路径下 打开命令行终端工具,输入一下命令:hprof-conv -z 1.hprof 2.hprof


第六步:使用MAT分析:

使用MAT 打开 2.hprof文件,点击Histogram :

搜索刚才提示的内存泄漏的activity

搜索出泄漏的activity,在该activity上右键->选择Merge Shortest Paths to GC Roots -> exclude all phantom/weak/soft etc.references,排除掉虚/弱/软引用。


展开树,从下往上分析,可以分析出泄漏的activity 被哪些对象正在引用,再通过代码分析为什么会出现泄漏。

你可能感兴趣的:(Android 内存泄漏分析定位(profiler+MAT))