Android Bitmap.createBitmap()填充堆

时间:2011-08-10 12:02:50

标签: java android graphics

我需要大位图(6000x2000),所以我创建了一个:

Bitmap.Config conf = Bitmap.Config.ARGB_4444;
Bitmap bm = Bitmap.createBitmap(6000, 2000, conf);

然后在方法结束时我回收bm并将其设置为null。 但是,每次调用我的方法时,我的堆都会增长。每次都会抛出OutOfMemoryError。

1 个答案:

答案 0 :(得分:3)

问题是,在Android 3.x之前,可能需要几个GC周期才能在Android上正确发布Bitmap。即使您调用recycle(),我相信位图也会计入您的堆使用情况,直到至少下一个GC。这是我建议您通过调用System.gc()强制GC的极少数情况之一。您也可以尝试使用几个较小的位图。