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