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 在 命令行窗口查看
- 查看设备app内存限制
adb shell getprop | findstr dalvik.vm.heapgrowthlimit

- Android app可以在
AndroidManifast.xml 里的<application android:largeHeap="true"/> 标签里加入largeHeap 开启内存加强,开启内存加强后,可使用内存会变大,这也是一个固定值,可以查看
adb shell getprop | findstr dalvik.vm.heapsize

- 可以查看更详细的
adb shell cat /system/build.prop | findstr dalvik.vm

|