(仅个人记录学习笔记)
第一步:准备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 被哪些对象正在引用,再通过代码分析为什么会出现泄漏。