android专项-内存分析

MAT下载地址:mat下载

1、导出.hprof文件

1.1 使用Androidstudio—>tools—>Android Device Monitor->进入DDMS

1)界面中选出应用程序的包名

2)点击Update Heap来更新统计信息(实现界面操作)

3)开始进行测试,测试结束后,点击Cause GC

4)点击Dump HPROF file,将该应用当前的内存信息保存成hprof文件

1.2 使用AS ->android Monitor 

1)选择device,应用包名

2)开始测试,结束测试,点击memory旁边的小车图案手动触发GC

4)点击小车旁边的图案,将该应用当前的内存信息保存成hprof文件

5)打开 captures 文件夹找到4中生成的hprof文件, export to standard hprof。

2、数据分析

2.1 使用AS进行分析

如果你的AS没有这功能请更新版本

打开1.2 中第4布生成的文件

android专项-内存分析 - 阿里云
AS analysis

2.2 使用MAT分析

2.2.1 DDMS 测试结束后点击Cause GC,点击Dump HPROF file/AS 导出标准的.hprof

2.2.2 MAT导入.hprof

2.2.3 Histogram查询

2.2.4 第一行可以输入正则表达式来匹配结果

android专项-内存分析 - 阿里云
Histogram

2.2.5 右键—>Merge Shortest Path To GC Roots->exclude allphantom/weak/soft etc. references

2.2.6 结果

由图可以看出class com.evideo.*.*.* @ 0x42651678组件调用com.evideo.*.*.* @ 0x426e98d8,导致的内存泄露this$0 间接引用

android专项-内存分析 - 阿里云
this$0 间接引用