2011-08-10 36 views
4

我需要大位圖(6000x2000),所以我創建一個:的Android Bitmap.createBitmap()填充堆

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

,然後在方法結束時,我回收BM並將其設置爲null。 但是,每次我的方法被調用時,我的堆都會增長。每次直到它拋出OutOfMemoryError。

+0

我可以只知道爲移動屏幕創建尺寸爲6000 * 2000的位圖的用途。你仍然可以減少它,這可能會減少你的OOM問題。 –

+0

有很好的問題:看到我的個人資料與第一個問題 –

+0

http://stackoverflow.com/questions/7006825/destroy-consume-memory-by-imageview –

回答

3

問題是,在Android 3.x之前,可能需要幾個GC週期才能在Android上正確發佈位圖。即使你調用recycle(),我相信至少在下一個GC之前,這個位圖會影響你的堆使用情況。這是我建議你通過調用System.gc()強制執行GC的極少數情況之一。您也可以嘗試使用幾個較小的位圖。