APP内存占用测试
APP內(nèi)存占用測試
1 主要測試點
空閑狀態(tài)
切換至后臺或者啟動后不做任何操作,消耗內(nèi)存最少。
中強度狀態(tài)?
時間偏長的操作應(yīng)用。
高強度狀態(tài)
高強度使用應(yīng)用,可以跑 monkey 來測試(通常用來測試內(nèi)存泄漏)。
內(nèi)存泄漏?
指使用 malloc 或 new 申請了一塊內(nèi)存,但是沒有通過 free 或 delete 將內(nèi) 存釋放,導(dǎo)致這塊內(nèi)存一直處于占用狀態(tài)。?
2 測試方法
使用 adb 命令?
adb shell dumpsys meminfo welab.bank.mobile.stage
?
主要指標?
Native heap alloc、Dalvik heap alloc?
若這兩個值一直增長,說明可能出現(xiàn)內(nèi)存泄漏
PSS,
App 實際占用的內(nèi)存大小:
下圖可以看出內(nèi)存總共占用329581,也就是329M,說明該APP占用內(nèi)存很大
多次中這條adb命令,對比以下參數(shù):
Native heap alloc、Dalvik heap alloc 、總內(nèi)存
主要關(guān)注
退出某個頁面后,內(nèi)存是否有回落。?
如果沒有及時回落,且程序自動 GC(Garbage Collection,垃圾回收)或 者手動 GC,那便可確認有問題。?
進行某個操作后,內(nèi)存是否增長過快。
如果增長過快,也有可能存在風(fēng)險,需重復(fù)操作確認。
android程序內(nèi)存被分為2部分:native和dalvik
dalvik就是我們平常說的java堆,
我們創(chuàng)建的對象是在這里面分配的
查看pss total和heap size(27716KB)
不能超過最大限制(使用下面的命令查看)
adb shell
getprop | grep heapgrowthlimit
查看單個應(yīng)用程序最大內(nèi)存限制(meminfo里面的dalvik heap size的最大值27716KB,
如果超出了192M那就很可能會發(fā)生OOM)
?
總結(jié):
每次gc后,pss total沒有明顯回落,就有可能存在內(nèi)存泄漏,但仍需長時間觀察。
dalvik heap size超過heapgrowthlimit會發(fā)生OOM,
但如果Manifest中的application標簽中聲明android:largeHeap=True,
則dalvik heap達到heapgrowthlimit限制的時候不會出現(xiàn)OOM,
需要達到heap size的時候才會出現(xiàn)OOM
adb shell
getprop | grep dalvik.vm.heapsize ?單個java虛擬機最大的內(nèi)存限制
?
再次總結(jié):
dalvik.vm.heapstartsize----------初始分配的內(nèi)存大小
dalvik.vm.heapgrowthlimit------應(yīng)用的最大內(nèi)存限制
dalvik.vm.heapsize--------------java虛擬機最大內(nèi)存限制
總結(jié)
- 上一篇: 使用pytorch构建LSTM_AE模型
- 下一篇: B-LISLCS