2011-12-02 93 views
4

我們有一個在內存中有很多位圖的應用程序。它一直不合格衡量(Android)堆碎片?

java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

錯誤。我們真的可能會使用太多的內存,我們可能正在泄漏記憶;也有可能我們沒有做錯任何事情,而堆碎片是什麼讓我們失望。 (由於Android的垃圾收集器不會重新分配活動塊,因此我們可以免費提供兆字節並且無法分配50K。)

有什麼方法可以排除分段嗎?我找了一些像maxAvail/memAvail,但沒有發現任何適合的東西。

+0

退房http://stackoverflow.com/questions/1955410/bitmapfactory-oom-driving-me-nuts/5493182 – Torid

+0

謝謝@Torid。這種做法可能是我們必須做的......如果事實證明我們確實使用了太多的記憶。不過,在這一點上,我們仍在試圖弄清楚我們有哪些問題。 –

回答

1

我會考慮通過MAT檢查堆。 Eclipse Memory Analyzer將幫助您確定您實際擁有哪些建議的問題。

在2011年的Google I/O大會上發表了一篇關於內存管理和調試主題的講座。您可以在這裏觀看它:http://www.youtube.com/watch?v=_CruQY55HOk&feature=relmfu

+0

謝謝。我會盡快回復,並且接受您的回答或發表進一步的評論。 –

+2

當MAT顯示你使用5M的32或64並且你在2M分配上獲得OOM時,很難斷定它只是碎片。 –