1. 程式人生 > >android 應用 heap size分配

android 應用 heap size分配

android不同裝置單個程序可用記憶體是不一樣的,可以檢視/system/build.prop檔案。

# This is a high density device with more memory, so larger vm heaps for it.
dalvik.vm.heapsize=24m

上面heapsize引數表示單個程序可用的最大記憶體,但如果存在如下引數:

dalvik.vm.heapgrowthlimit=16m

largeheaplimit引數表示單個程序記憶體被限定在16m,即程式執行過程中實際最大智慧使用16MB記憶體,不過有一個辦法可以解決,編輯AndroidManifest.xml中的Application節點,增加屬性largeheap="true"引數.

這個引數的實現是在:

frameworks\base\core\jni\AndroidRuntime.cpp中的 startVM函式中,語句如下:

    property_get("dalvik.vm.heapsize", heapsizeOptsBuf+4, "64m");
    LOGI("Heap size: %s", heapsizeOptsBuf);
    opt.optionString = heapsizeOptsBuf;
    mOptions.add(opt);

之後mOptions會作為啟動VM引數傳入。