1. app內(nèi)存限制
??Android給每個(gè)App分配一個(gè)VM,讓App運(yùn)行在dalvik上,這樣即使App崩潰也不會影響到系統(tǒng)。系統(tǒng)給VM分配了一定的內(nèi)存大小,App可以申請使用的內(nèi)存大小不能超過此硬性邏輯限制,就算物理內(nèi)存富余,如果應(yīng)用超出VM最大內(nèi)存,就會出現(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)存大小的限制。

app_heapSize.png
2. 查看Android設(shè)備上的對APP的內(nèi)存限制
主要查看系統(tǒng)配置文件 build.prop,我們可以通過adb shell在 命令行窗口查看
- 查看設(shè)備app內(nèi)存限制
adb shell getprop | findstr dalvik.vm.heapgrowthlimit
heapgrowthlimit - Android app可以在AndroidManifast.xml里的
<application/>標(biāo)簽里加入android:largeHeap="true"開啟內(nèi)存加強(qiáng),開啟內(nèi)存加強(qiáng)后,可使用內(nèi)存會變大,這也是一個(gè)固定值,可以查看
adb shell getprop | findstr dalvik.vm.heapsize
heapsize - 可以查看更詳細(xì)的
adb shell cat /system/build.prop | findstr dalvik.vm
build.prop


