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