1. 程式人生 > >Android應用程序的默認最大內存值

Android應用程序的默認最大內存值

版本 family lan 方法 all rfi 大小 -a sim

原文: http://www.ziyouku.com/archives/android-applications-to-modify-the-default-maximum-memory-value.html

Android應用程序的默認最大內存值為16M,有些應用程序可能會出現內存溢出,譬如:

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

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

Android應用程序的默認最大內存值