1. 程式人生 > >Android應用程式的預設最大記憶體值以及修改

Android應用程式的預設最大記憶體值以及修改

Android應用程式的預設最大記憶體值為16M,不同的手機版本和型號有所不同.

Android應用程式的預設最大記憶體值

有些應用程式可能會出現記憶體溢位,譬如:

ERROR/AndroidRuntime(264): java.lang.OutOfMemoryError: bitmap size exceeds VM budget

除了要檢查修正程式碼之外,還可以考慮修改Android應用程式的預設最大記憶體值。

修改應用程式的預設最大記憶體有2種方法:

1、修改程式碼,適用於自己編譯燒機:

當應用程式分配記憶體時,會呼叫到dalvik/vm/alloc/HeapSource.c中的 dvmTrackExternalAllocation()方法,繼而呼叫到externalAllocPossible()方法,該方法要求當前堆已使用的大小(由currentHeapSize和hs->externalBytesAllocated構成)加上我們需要再次分配的記憶體大小不能超過堆的最大記憶體值,如果超過就會報錯。

有兩個地方決定了一個堆的最大記憶體:

1)dalvik/vm/Init.c中的

gDvm.heapSizeMax = 16 * 1024 * 1024;    // Spec says 75% physical mem

2)frameworks/base/core/jni/AndroidRuntime.cpp中的

property_get("dalvik.vm.heapsize", heapsizeOptsBuf+4, "16m");

因此解決辦法就是將以上2點中預設的16M改大一點,譬如32M

2、修改配置檔案,適用於燒機後的版本。

修改或新增/system/build.prop中的配置項: dalvik.vm.heapsize=32m