首先,我知道这里有很多相关的文章,我读了很多,没有任何帮助,而且我没主意:)
因此,我正在开发一个使用大量图像(用于按钮,徽标,显示大量图像等)的android应用(sdk版本14+)。平均图片大小为120kb +-100kb
如标题所述,我开始出现OutOfMemory错误。首先,我将图像源添加到xml中的ImageViews或使用setImageResource以编程方式添加。很快,由于OutOfMemory错误,应用开始崩溃。因此,我已阅读了本(http://developer.android.com/reference/android/util/LruCache.html)教程并按其说明实现了LruCache。我向lrucache添加了位图,然后使用get方法将位图设置为imageview。
在 Activity 的onDestroy方法中,我在lrucache上调用evictAll方法,并将lrucache设置为null。因此,我认为,然后释放内存。
但是问题仍然存在,当我进行几次 Activity 时,应用程序崩溃了。
帮助非常感谢:)
最佳答案
根据文档,超过最大可用VM内存将抛出OutOfMemory异常。似乎缓存位图超出了可用的虚拟内存。
不使用时回收位图。
bitmap.recycle();
When should I recycle a bitmap using LRUCache?。看一下通用软件接受的答案。
我相信当LRUCache逐出一幅图像以腾出另一幅图像时,内存并未被释放。(在上面的链接中,用户提出了要求)
直到位图被回收或被垃圾回收时,情况才会发生。(由commomsware回答)。
http://www.youtube.com/watch?v=_CruQY55HOk。讨论内存管理,内存泄漏以及如何使用MAT Analyzer。