【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"小图标,如下图:
Eclipse会为我们生成HPROF的内存描述文件,因为,我们安装了MAT插件,所以,它会同时打开MAT的界面,如下图:
中间的大饼图,显示了我们的内存中存被哪些大对象占据着。其中,灰白那块表示空闲的内存。
重点关注左下角Actions那栏的Dominator Tree。点击Dominator Tree,进入以下视图:
我们按Retained Heap列进行排序,排在前面的就是占用最大内存的对象。可以看到,我们应用中自定义的XxxxApplication占用了比较大的内存。我们点击它左边的小三角形,一级一级展开来,看看到底是具体哪些类的对象占用了这么大的内存。如下图:
最终,我们可以查出内存占用高而不释放的原因:里面存储大量的Hashmap对象(里面存MsgBean列表),而这些HashMap对象一直没有释放,导致App挂在后台很久后,越积越多。因为手机硬件配置比较高,所以,App挂在后台很久没有被Kill掉。不过,要保持良好的资源释放的习惯,这个很有必要。
上面所说的Actions栏中,除了Dominator Tree外,还有Histogram、Top Consumers、Duplicate Classes,它们分别以不同的方式,展现了内存的使用情况。在这里就不再一一分析。
找出性能问题,想办法修正它!这个很重要!
@容新华技术博客 - http://blog.csdn.net/rongxinhua - 原创文章,转载请注明出处
更多相关文章
- 让Android的WebView支持WebSocket
- android中sqlite操作
- 浅谈Android引用计数(2)
- android其实很简单--内存相关
- 程序员挑战高薪,你必须会的十大面试题《一》
- 用volley从网页获取json数据
- Android(安卓)TwoLineListItem
- 从源码看ANDROID中SQLITE是怎么通过CURSORWINDOW读DB的
- 跟着官方学习Android(安卓)— Services