Step 1.
首先在Eclipse中下载安装MAT工具,安装完成后连接设备,Eclipse打开ddms,在进程列表中选择要分析的进程,点击红圈中的圆柱体,在应用中执行一些操作后如果我们看到右边的内存在不断增加,则表明该进程中存在内存泄露。
Step 2.
然后点击带有箭头的圆柱体,eclipse会自动导出所选进程的hprof并调用MAT在eclipse中显示分析结果:
Step 3.
在分析结果的reports中有一个Leak Suspect,打开后我们能看到MAT认为有内存泄露的地方,分析方法见后面Step 8:
Step 4.
如果认为Leak Suspect中的信息没有用,可以点击下图红圈中的信息:
Step 5.
它会把进程中所有的对象都列出来,包括个数和占用空间的大小:
Step 6.
如果我们怀疑某个对象可能没有得到释放,可以在下图红圈中输入对象的类名来查看:
Step 7.
这时我们可以看到输入的类的对象有多少个,反复执行操作后再执行上述操作,可以确定输入的对象是否有增加,如果有就说明它确实存在泄漏:
Step 8.
要查看到底是什么对象在引用他们导致内存泄漏,右键单击选择对象,依次按图选择菜单:
Step 9.
这样它会显示是什么对象在引用它们,这时我们再结合代码就知道为什么这些对象在增加了。