如何解决Android应用程序中的内存不足错误

时间:2011-08-12 15:30:10

标签: android out-of-memory

我有自定义列表视图。因为我列出了大约200张图像。图像存储在我的drawable中。我已将图像转换为位图,我将图像显示为位图。每次打开活动时,图像都会被列出。像这样,当我调用活动大约10次时,它会崩溃并且错误是

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

然后我回收了位图并使用System.gs函数我得到了以下

Clamp target GC heap from 25.464MB to 24.000MB
GC freed 322 objects / 70664 bytes in 146ms
 Clamp target GC heap from 25.471MB to 24.000MB
 GC freed 2 objects / 48 bytes in 138ms
Forcing collection of SoftReferences for 10720-byte allocation
 Clamp target GC heap from 25.269MB to 24.000MB
 DEBUG/dalvikvm(15311): GC freed 5080 objects / 211168 bytes in 121ms
 ERROR/dalvikvm-heap(15311): Out of memory on a 10720-byte allocation

现在我得到了这个Out of memory on a 10720-byte allocation错误

现在如何解决错误,请帮助我的朋友

2 个答案:

答案 0 :(得分:2)

让我们查看您的情况清单:

  1. 每次都会创建一个新活动而您忘记完成上一个活动吗?如果您这样做,请确保通过将内存转储到.hprof文件并使用MemoryAnalyzer(http://www.eclipse.org/mat/)来分析应用程序。检查内存中活动的实例数,以确保实际清理它。
  2. 如果要重新加载相同的数据,可能需要保留此活动并在启动时使用FLAG_ACTIVITY_REORDER_TO_FRONT,这样就不需要重新创建
  3. 你的抽签有多大?您可能希望在将其设置为ImageView
  4. 之前调整其大小

    让我想一些可能有用的内容,稍后再添加

答案 1 :(得分:1)

您是否尝试将位图变量设置为软参考?