使用MAT分析内存使用情况。试图解释我所看到的

时间:2012-03-18 02:42:32

标签: android eclipse memory

我通过一遍又一遍地加载相同的屏幕来自动测试我的应用程序。我每400次屏幕加载就进行堆转储,然后尝试查看是否有泄漏。屏幕进行3次网络调用(它加载两个XML文件和一个位图文件)。我注意到了这个对象:

“org.apache.http.impl.conn.tsccm.ConnPoolByRoute”的39个实例,由“”加载占用6,506,440(51.72%)个字节。

这是在800次屏幕加载之后。 “有趣”的事情是,在400次加载后,共有75个实例总计约为13MB!

事实上,最奇怪的是,堆不断增加,从12MB增加到近27MB(我不确定它是否会超过设备的64MB!)。当我停止自动加载并反复按下Eclipse DDMS堆部分中的“原因GC”时,它会逐渐减少“已分配”内存,直到我差不多降到6MB!我的问题是,即使看起来我没有使用所有内存,堆大小如何不断增加。是因为我的记忆被碎片整理了吗?如果我不继续创建新对象但保留对象池,我是否应该能够转换更多内存?当我达到64MB的临界值时,GC不会导致OOM吗?它应该尝试更多地做到最好吗?我觉得有点不安,它会接近64MB。我希望GC更准时:)

希望有人可以提供帮助。

最佳, 里斯

0 个答案:

没有答案