android的开发和测试工具很多,稍微总结下,方便以后用。
首先说个简单点的,分析程序的内存泄露工具DDMS:
之前项目中遇到的一个就是2-byte arry的数据在不停的增长,导致程序运行的很卡,直到最后卡死。
如果你发现了一种类型的数据在不停的增长,就要具体问题具体分析了,因为你是对代码最熟的。我当时就一段代码一段代码的排除,最后找到泄露的地方。
另外一种方式稍微麻烦一点,我用的也不是很熟练,简单介绍下:
然后要下载一个工具(也算是eclipse的一个插件):
MemoryAnalyzer-1.1.1
下载下来之后直接点击MemoryAnalyzer.exe,然后open 上面生成的hprof文件,见下图。
饼状图就画出来当前可能出现问题的概率,饼状图下面会有详细的文字描述。
调试内存泄露时,有时候适时比较2个地方的heap状态是很有用的。这时你就需要生成2个单独的HPROF文件(不要忘了转换格式)。下面是一些关于如何在MAT里比较2个heap dumps的内容(有一点复杂):
- 第一个HPROF 文件(using File > Open Heap Dump ).
- 打开 Histogram view.
- 在Navigation History view里 (如果看不到就从Window > Navigation History找 ), 右击histogram 然后选择Add to Compare Basket .
- 打开第二个HPROF 文件然后重做步骤2和3.
- 切换到Compare Basket view, 然后点击Compare the Results (视图右上角的红色"!"图标)。
给两个链接,mat说的比较详细: