Android,我看到堆增长,但我希望它停止

CQM*_*CQM 3 heap android garbage-collection

我看到我的堆越来越多了,我知道它会最终在任何设备上崩溃,因为它会不断增长.

Grow heap (frag case)

在整个日志中都可以看到

在我的手机上它会使用32mb的应用程序崩溃.其他手机当然是16mb,如果有少量资源运行Android 2.2

现在,我正在使用recycle()我的位图,将事物设置为null,从复杂数据结构中弹出项目,以及System.gc()在整个应用程序中使用调用垃圾收集

但是,堆仍然在增长并且最终会出现问题

我如何强制应用程序转储资源,以便它可以继续运行.

它通常总是"位图vm预算"超过,但我感觉越来越多,我只是无法访问"clear bitmap vm"命令

N-J*_*JOY 16

我在这个问题上也遇到了很多困难.你可以做很多事情.

  1. 你可以在每个位图上调用recycle并将它们设置为null.(bitmap.recycle()使用此位图使用的所有内存但不会使位图对象无效).

  2. 您还可以取消绑定drawables与此链接中指定的布局关联.

  3. 你可以转换hashmapsWeakHashmaps.因此当系统内存不足时,它的内存会被重新启动.

  4. 您可以调整所有位图的大小.看看这墨水..

  5. 你可以覆盖onLowMemory()活动中的方法,当整个系统内存不足时,它会接到一个调用.你可以在那里释放一些资源.

  6. 你可以让你的对象SoftReferenceWeakreference,使他们获得在低内存情况下解除.

但真正的事实是,所有这些都可以延迟你的内存问题/崩溃,但不能消除它,因为事情是你必须泄漏你的活动上下文或内存.