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,即程序运行过程中实际只能使用16m内存,不过有一个办法可以解决,编辑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参数传入。