2016-04-21 45 views
3

我的Android應用程序觸發這樣一個OutOfMemoryError:的OutOfMemoryError錯誤消息的明確解釋

java.lang.OutOfMemoryError: Failed to allocate a 74649612 byte allocation with 1048576 free bytes and 63MB until OOM 

誰能解釋了每個這些值的意思(「字節分配」,‘免費字節’和「 ,直到OOM「)?這個消息對我來說有點混亂。

詳細:據我的理解:有63MB,直到我們得到一個OutOfMemoryError異常,我們儘量分配74649612個字節,但我們只有1048576免費字節。 (如果我們有「1048576空閒字節」,我們如何擁有「63MB直到OOM」?我們是否有63MB + 1048576可用字節完全可用,並且我們試圖分配比74649612更多的字節?)

回答

6

「Byte分配「是指您嘗試在單個塊中分配多少內存。在這種情況下,這是74649612字節。這種分配請求在大多數情況下都會失敗。

「自由字節」指的自由空間有多少字節適用於您的堆在不擴展堆。在這種情況下,這是1048576字節。但請注意,這些「空閒字節」可能不在一個連續的塊中。通常,這個空閒空間被分割成許多小塊。

「直到OOM」表示你可以堆超出其目前的規模擴大。基於設備特性,每個進程都有一個堆棧限制。在你的情況下,堆可以從當前的大小擴大63MB,直到堆大小的限制。但是,即使那樣也不夠大,無法爲您提供您請求的大小的單個連續空閒塊。

0

OutOfMemoryError

是Android中最常見的問題,尤其是處理位圖時。此錯誤是由當物體不能分配由於缺乏存儲空間,並且還,垃圾回收器不能釋放一些空間,Java虛擬機(JVM)拋出。

閱讀所有5節課並重新編寫代碼。如果它仍然不起作用,我們將很高興看到您在教程材料中做了什麼錯誤。

這裏是一些在SOF

Android的這些類型的錯誤,可能的答案:BitmapFactory.decodeStream()出與2MB免費堆一個400KB的文件存儲

如何解決java.lang.OutOfMemoryError在Android的

麻煩

安卓java.lang.OutOfMemoryError

java.lang.OutOfMemoryError

OutOfMemoryError解決方案:位圖大小超過虛擬機預算

請您可以使用該圖像。而這個圖像尺寸很大就是問題。你可以調整圖像大小來調整大小