美文网首页安卓Android优化Android深入
Android 内存泄漏分析定位(profiler+MAT)

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

作者: 犇犇灬zk | 来源:发表于2022-07-25 16:12 被阅读0次

    (仅个人记录学习笔记)

    第一步:准备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)

        本文链接:https://www.haomeiwen.com/subject/wjigirtx.html