1. app內(nèi)存限制
??Android app運(yùn)行在vm 上,而Android系統(tǒng)對vm heapsize 做了一個硬性邏輯限制,就算物理內(nèi)存富余,如果應(yīng)用超出APP邏輯內(nèi)存,APP就會出現(xiàn)內(nèi)存溢出crash。
??由程序控制操作的內(nèi)存空間在heap 上,分java heapsize 和native heapsize ,Java申請的內(nèi)存在vm heap 上,所以如果java 申請的內(nèi)存大小超過VM 的邏輯內(nèi)存限制,就會出現(xiàn)內(nèi)存溢出的異常。native層內(nèi)存申請不受其限制,native 層受native process 對內(nèi)存大小的限制。
2. 查看Android設(shè)備上的對APP的內(nèi)存限制
主要查看系統(tǒng)配置文件 build.prop ,我們可以通過adb shell 在 命令行窗口查看
- 查看設(shè)備app內(nèi)存限制
adb shell getprop | findstr dalvik.vm.heapgrowthlimit
- Android app可以在
AndroidManifast.xml 里的<application android:largeHeap="true"/> 標(biāo)簽里加入largeHeap 開啟內(nèi)存加強(qiáng),開啟內(nèi)存加強(qiáng)后,可使用內(nèi)存會變大,這也是一個固定值,可以查看
adb shell getprop | findstr dalvik.vm.heapsize
- 可以查看更詳細(xì)的
adb shell cat /system/build.prop | findstr dalvik.vm
|