我看到我的堆在增长,我知道它最终会在任何设备上崩溃,因为它一直在增长。Grow heap (frag case)
在整个日志中都可以看到
在我的手机上,它会在使用 32mb 时使应用程序崩溃。其他手机当然是 16mb,如果有那么少的资源可以运行 android 2.2
现在,我在我的位图上使用 recycle()
,将事物设置为 null,从复杂的数据结构中弹出项目,并在整个应用程序中使用 System.gc()
调用垃圾收集
但是,堆仍在增长,这是一个问题......最终
我如何强制应用程序转储资源以便它可以继续运行。
通常总是超出“位图虚拟机预算”,但我越来越觉得我无法访问“清除位图虚拟机”命令
最佳答案
我也在这个问题上挣扎了很多。你可以做很多事情。
bitmap.recycle()
与释放此位图使用的所有内存,但不会使位图对象无效)。 drawables
。 hashmaps
转换为 WeakHashmaps
。以便在系统内存不足时释放其内存。 onLowMemory()
方法,当整个系统内存不足时,该方法会收到调用。你可以在那里释放很少的资源。 SoftReference
或 Weakreference
,以便它们在内存不足的情况下被释放。 但真正的事实是,所有这些都可以延迟您的内存不足问题/崩溃,但无法消除它,因为您必须在某处泄漏您的 Activity 上下文或内存。
关于Android,我看到堆在增长,但我希望它停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8381617/