本次利用DDMS来测试。


adb devices,设备连接正常

启动App,操作一会

启动DDMS

APP专项---内存泄漏2_第1张图片

左侧,先找到刚才操作的App,选中

然后点击左上角的show heap updates

APP专项---内存泄漏2_第2张图片

然后,右侧点击 VM Heap-->Cause GC(主动进行一次垃圾清理)

关注data object-->Total Size

APP专项---内存泄漏2_第3张图片

Used%也可以做参考,主要还是观察 Total Size

image.png

继续操作App

如果Total Size的值稳定在一个有限的范围(每次GC之后都会回落),

说明代码良好,不存在内存泄漏

反之,如果这个值越来越大,则说明存在内存泄漏


如果出现内存泄漏,Dump HPROF file

APP专项---内存泄漏2_第4张图片


然后使用hprof-conv命令转化一下,

 image.png

把转化后的文件,放入一个目录

然后,使用MAT分析

APP专项---内存泄漏2_第5张图片

打开文件

APP专项---内存泄漏2_第6张图片

APP专项---内存泄漏2_第7张图片

APP专项---内存泄漏2_第8张图片

Shallow Heap排序,倒序

APP专项---内存泄漏2_第9张图片

在第一条上,右键,List objects--with incoming references

APP专项---内存泄漏2_第10张图片

再排一下序,倒序

APP专项---内存泄漏2_第11张图片

选择第一条,右键,Path To GC Roots-->倒数第二项

APP专项---内存泄漏2_第12张图片

分析一下最下面那个,有可能就是问题所在,提交个开发即可

APP专项---内存泄漏2_第13张图片