阅读 1443

Android APP的最大可用内存

JAVA虚拟机对单个进程的最大内存进行了限制,如果超出这个值就会抛出OOM。这个属性值定义在/system/build.prop文件中,不同设备的这个值会不一样,各个厂商的ROM都会根据设备配置对这个值进行修改,第一部Android手机(G1)为16M。

应用最大内存值默认是 dalvik.vm.heapgrowthlimit (仅针对dalvik堆,不包括native堆)

如果想要被允许获得更大的内存可以使用 android:largeHeap="true" ,使用largeHeap后其限制值会变为 dalvik.vm.heapsize 。

adb shell getprop dalvik.vm.heapsize
512m

------------------- build.prop 部分内容 -----------------

dalvik.vm.heapstartsize=16m
dalvik.vm.heapgrowthlimit=384m
dalvik.vm.heapsize=512m
ro.com.google.gmsversion=10_202005
net.bt.name=Android
复制代码

也可使用下方代码查看应用最大内存:

ActivityManager am = (ActivityManager) getApplication().getSystemService(Context.ACTIVITY_SERVICE);
int limitMemorySize = am.getMemoryClass();
int largeMemorySize = am.getLargeMemoryClass();

long maxMemory = Runtime.getRuntime().maxMemory();//根据是否largeHeap,等于limitMemory或largeMemory
复制代码

虽然64位的寻址空间比32位大了很多,但在android上将应用从32位改为64位并不会带来更大的内存阈值,始终还是 heapgrowthlimit 和 heapsize。

文章分类
Android
文章标签