微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android运行应用内存使用情况

我们可以在Elipse内存分析工具(在DDMS视图中)中看到的堆使用情况(已分配)与 Android设备上显示的同一应用程序的内存使用量大小有什么区别?:

设置 – > Apps->跑步

即使我通过在不需要时使对象为空来积极地尝试保留内存,后一个数字(运行应用程序屏幕上的内存使用大小)只会不断增加,我的应用程序最终因OutOfMemoryError而崩溃.然而,前者告诉我,我在合理的尺寸范围内.我也经常调用System.gc().这两者有区别吗?为什么会出现差异?关于如何解决这个问题的任何想法?

解决方法

我所知道的两者之间最大的区别是垃圾收集的范围.

正常的垃圾收集,包括System.gc(),收集一些垃圾,然后停止.它并不是彻底清除堆积物以摆脱一切.那就是尽量减少垃圾收集对cpu的影响.

但是为MAT准备的堆转储实际上是一个完整的GC.

您的症状表明您分配内存的速度比GC可以回收的速度快.对此的主要解决方案是尝试分配更少的内存,或者更少地分配内存.例如,在可能的情况下,重用对象,位图缓冲区等,而不是试图让GC清理旧的东西并分配新的东西.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐