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