最近,我宣佈一個功能,我把函數for
循環象下面這樣:由於For循環中的堆內存不足導致內存不足?
Bitmap image = ...//Do stuff to get image's bitmap, it's quite ok
for(int i =0; i < someNumber; i++){
image = doSomeThing(image, width, height);
}
private Bitmap doSomeThing(image, width, height){
int[] a = new int[10000];
Bitmap bitmap = image.copy(sentBitmap.getConfig(), true);
// Do some stuff here to process image
...
return (bitmap);
}
隨着for
循環參數someNumber
小於5,我的應用程序是相當精緻的,否則,我會outOfMemory
。所以我想問一個建議來解決這個exception
!我可以使用System.gc()
嗎?或者我可以在每個循環for
之後做些什麼來消除未被佔用的內存?
編輯:對不起,也許我省略了太多,我更新了我的代碼!
Edited2:如果不是for
循環,我用電話image = doSomething(...)
多次,該exception
是沒有更多!
謝謝!
您是否將引用保存到新數組的某處?否則我不明白爲什麼JVM應該抱怨而不是釋放內存 –
也許向我們展示更多代碼? –
假設循環體不包含任何其他你遺漏的東西,並且你不會泄漏doSomeThing()以外的[]的引用,你應該立即得到異常或永遠不會得到異常。你可能忽略了一些東西。 – Durandal