项目前期已经结束,基本功能都已完工,用户反馈启动速度越来越慢,所以开始进行代码优化。使用Android自带的DDMS配合MAT进行分析。
先使用DDMS中HEAP工具调试应用,针对一个可能存在的内存占用过高的功能点进行不断操作,查看data object中的Total Size,如果值停留在某个范围内不再变化,点击生成Dump hprof 文件。
使用MAT进行查看。点击 Leak Suspects 选项查看存在问题的点(由于保密性,注释掉包名),点击detail查看。关注下图中红色框中的内容。
可以看到PhoneLableDtatStore类的Shallow Heap和Retained Heap比非常大,这个就是一个分析点,需要深入分析代码,找出原因。
相关资料:
使用Memory Analyzer tool(MAT)分析内存泄漏 http://www.blogjava.net/rosen/archive/2010/05/21/321575.html
MAT下载地址:http://www.eclipse.org/mat/downloads.php
使用 Eclipse Memory Analyzer 进行堆转储文件分析 http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html