1. app内存限制
Android
给每个App分配一个VM
,让App运行在dalvik
上,这样即使App
崩溃也不会影响到系统。系统给VM
分配了一定的内存大小,App可以申请使用的内存大小不能超过此硬性逻辑限制,就算物理内存富余,如果应用超出VM
最大内存,就会出现内存溢出crash。
由程序控制操作的内存空间在heap上,分java heapsize
和native heapsize
,Java申请的内存在vm heap
上,所以如果java
申请的内存大小超过VM的逻辑内存限制,就会出现内存溢出的异常。native层内存申请不受其限制,native
层受native process
对内存大小的限制。
app_heapSize.png
2. 查看Android设备上的对APP的内存限制
主要查看系统配置文件 build.prop
,我们可以通过adb shell
在 命令行窗口查看
- 查看设备app内存限制
adb shell getprop | findstr dalvik.vm.heapgrowthlimit
heapgrowthlimit - Android app可以在AndroidManifast.xml里的
<application/>
标签里加入android:largeHeap="true"
开启内存加强,开启内存加强后,可使用内存会变大,这也是一个固定值,可以查看
adb shell getprop | findstr dalvik.vm.heapsize
heapsize - 可以查看更详细的
adb shell cat /system/build.prop | findstr dalvik.vm
build.prop