2011-12-14 30 views
0

我的程序運行得很好,然後我總是遇到一個隨機崩潰錯誤(例如錯誤膨脹類),這幾乎總是由OutOfMemoryError啓動。Android程序崩潰隨機錯誤(由java.lang.OutOfMemoryError引起)

我看着我的VM堆在DDMS,它看起來像GC是做它的工作,我會看%used上上下下隨着#Objects

我注意到,我得到的崩潰,當我已經接近以下統計數據:

Heap Size 11.820 MB 
Allocated 7.020 MB 
Free   4.801 MB 
% Used  59.39% 
# Objects 148,927 

這是關於設備上的使用高峯。有時它會在這裏崩潰,但有些時候它允許我移動到另一個類別,這使得GC可以將%used降至32%。不過,即使使用率下降,我通常也會很快崩潰。

我通常會碰到一連串的錯誤。最上面的Caused by:錯誤通常是類似Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget

我不確定下一步該去哪裏,因爲設備在崩潰時資源似乎很好,但抱怨沒有足夠的內存。我試圖運行沒有圖像的程序,我仍然得到一個崩潰的應用程序。無論如何,我應該從哪裏開始尋找元兇

**編輯**

的Kindle Fire在Android 2.3.4通過Eclipse

回答

2

在蜂窩狀前的Android版本的位圖數據存儲如雷貫耳VM堆,所以它不可能通過跟蹤DDMS位圖數據:) 有兩種可能的原因: 1.您的界面使用巨大數量的圖像 2.您手動創建位圖併發生內存泄漏。在一個谷歌IO介紹是說,一些垃圾收集必要完全免費的位圖內存


對不起,錯過了該應用程序崩潰沒有圖像。定期嘗試dump內存使用情況,稍後通過Eclipse內存分析器看到它。

+0

我在編輯中添加了操作系統版本號,它絕對是預蜂窩式(良好呼叫)。在我的應用程序中,我有兩個部分都是ViewPagers。關於「destroyItem」,我不會拋棄「頁面」,因爲它們需要一段時間才能加載(並且我會以同樣的方式得到相同的錯誤),所以我將它們留在目前而不是重新實例化。在一節中,我會找到大約120張縮略圖(6頁X〜20頁)。改變樣本量也沒有幫助,所以我不相信這是圖像。無論如何,我的喋喋不休。我會暫時給你的記憶轉儲想法一個鏡頭。 – Jacksonkr 2011-12-14 22:42:01