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