【Android】Android性能测试之MAT的使用

在“【Android】Android性能测试之DDMS“一文中,介绍了通过DDMS来监测我们的内存使用情况。但是,DDMS的Heap视图,也仅仅显示了一个统计结果,对于哪些类哪些对象造成了内存的占用不释放,我们不可知!本文介绍一个更加强大的内存测试工具MAT。

MAT下载地址:http://www.eclipse.org/mat/downloads.php

我们这里使用MAT的Eclipse插件:http://download.eclipse.org/mat/1.3.1/update-site,为我们的Eclipse安装这个插件吧。(安装过程略,不会安装插件的朋友请Google)

同样是打开DDMS视图,在设备列表中先中要测试的应用程序,点击"Dump HPROF file"小图标,如下图:

【Android】Android性能测试之MAT的使用_第1张图片


Eclipse会为我们生成HPROF的内存描述文件,因为,我们安装了MAT插件,所以,它会同时打开MAT的界面,如下图:

【Android】Android性能测试之MAT的使用_第2张图片


中间的大饼图,显示了我们的内存中存被哪些大对象占据着。其中,灰白那块表示空闲的内存。

重点关注左下角Actions那栏的Dominator Tree。点击Dominator Tree,进入以下视图:

【Android】Android性能测试之MAT的使用_第3张图片


我们按Retained Heap列进行排序,排在前面的就是占用最大内存的对象。可以看到,我们应用中自定义的XxxxApplication占用了比较大的内存。我们点击它左边的小三角形,一级一级展开来,看看到底是具体哪些类的对象占用了这么大的内存。如下图:

【Android】Android性能测试之MAT的使用_第4张图片


最终,我们可以查出内存占用高而不释放的原因:里面存储大量的Hashmap对象(里面存MsgBean列表),而这些HashMap对象一直没有释放,导致App挂在后台很久后,越积越多。因为手机硬件配置比较高,所以,App挂在后台很久没有被Kill掉。不过,要保持良好的资源释放的习惯,这个很有必要。

上面所说的Actions栏中,除了Dominator Tree外,还有Histogram、Top Consumers、Duplicate Classes,它们分别以不同的方式,展现了内存的使用情况。在这里就不再一一分析。

找出性能问题,想办法修正它!这个很重要!


@容新华技术博客 - http://blog.csdn.net/rongxinhua - 原创文章,转载请注明出处


你可能感兴趣的:(Android)