[ Mac 版本 ]Android Studio导出 hprof 到 MAT

最近使用MAT 的学习过程,有不准确的地方,欢迎指正😁
项目中需要定位内存泄露位置的有效方法

MAT 准备工具

工具地址 : https://www.eclipse.org/mat/

Android Studio生成hprof文件 然后用MAT 具体分析:

  • 1 profile


    image.png
  • 2 生成 hprof 文件


    image.png

选择 package ,根据自己包名,查找那些对象存在泄漏风险

  • 3 在左侧,保存文件,生成 hprof 文件

  • 4 使用SDK platform-tools 把 hprof 文件转换成 MAT工具可识别的格式


    image.png

/** 如果转换工具出现问题,可以查看这个
[mac下 使用MAT 查看android应用内存情况]https://www.jianshu.com/p/6593538f1c09
感谢分享,非常完美😝 **/

转换mat标准文件
命令:hprof-conv -z src dst
src  是原文件
dst  是需要转换成的文件, 注意名字一定有 _mat 

例如:hprof-conv -z 1.hprof 1_mat.hprof 
  • 5 将生成好的,MAT 工具可识别的文件,用MAT工具打开


    image.png

    点击 Histogram

  • 6 查找刚刚在profile 存在内存泄露的对象


    image.png

    可以看到, MainActivity 有两个对象,说明存在泄漏问题

  • 7 点击右键选择

    1. Merge Shortest Paths to GC Roots
    2. exclude all plantom/weak/soft etc. references
  • 8 最终找到哪些位置引用而产生的内存泄漏


    image.png

到这,就可以去对应类中具体分析

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容