Android OutOfMemory错误&;鲁卡什
首先,我知道有很多相关的帖子,我读了很多,没有一篇对我有帮助,我也没有主意:) 因此,我正在开发一个android应用程序(sdk版本14+),它使用大量图像(用于按钮、徽标、显示大量图像等)。平均图像大小为120kb+-100kb 正如标题所说,我正在摆脱记忆错误。首先,我以xml或使用setImageResource以编程方式将图像源添加到ImageView中。很快,由于OutOfMemory错误,应用程序开始崩溃。所以我已经阅读了这个()教程,并按照它所说的实现了LruCache。我将位图添加到lrucache,然后使用get方法将位图设置为imageview 在活动的onDestroy方法中,我调用lrucache上的executeAll方法,并将lrucache设置为null。所以我想,内存被释放了 然而,问题仍然存在,当我进行一些活动时,应用程序崩溃了Android OutOfMemory错误&;鲁卡什,android,out-of-memory,Android,Out Of Memory,首先,我知道有很多相关的帖子,我读了很多,没有一篇对我有帮助,我也没有主意:) 因此,我正在开发一个android应用程序(sdk版本14+),它使用大量图像(用于按钮、徽标、显示大量图像等)。平均图像大小为120kb+-100kb 正如标题所说,我正在摆脱记忆错误。首先,我以xml或使用setImageResource以编程方式将图像源添加到ImageView中。很快,由于OutOfMemory错误,应用程序开始崩溃。所以我已经阅读了这个()教程,并按照它所说的实现了LruCache。我将位图
非常感谢您的帮助:)您是否将所有图像都存储在堆中?如果是这样,您应该将它们缓存在sd卡或内部存储器中,并在堆中只保留一堆(一个很好的方法是使用LRU缓存) 如果你已经这么做了。。。您可以下载内存分析器工具并调试应用程序的内存使用情况 处理OutOfMemory错误可能非常痛苦
祝你好运 根据文档,超过最大可用VM内存将抛出OutOfMemory异常。缓存位图似乎超出了可用的虚拟内存 不使用时回收位图
bitmap.recycle();
。看看Commonware接受的答案
我相信当LRUCache逐出一个图像为另一个图像腾出空间时,内存并没有被释放
除非位图被回收或垃圾回收,否则它不会被删除
。讨论内存管理、内存泄漏和使用MAT Analyzer。谢谢你们的帮助 因此,如果有人用同样的问题来回答这个问题,这里有一些指导原则:
- 不再需要位图时,在位图上调用.recycle()
- 使用Eclipse内存分析器查找您的问题
- (必须)看视频
- 如何从.hprof文件查看位图