Android 效能測試——Memory Monitor 工具

Coffee_zq發表於2016-12-18

Android 效能測試——Memory Monitor 工具

 

Memory Monitor能做什麼?

  • 實時檢視App的記憶體分配情況
  • 快速判斷App是否由於GC操作造成卡頓
  • 快速判斷App的Crash是否是因為超出了記憶體

Memory Monitor使用準備

  • 開發者選項可用
  • USB除錯開啟

備註:Android Studio的Enable ADB Integration勾選(Tools/Android下)。

Memory Monitor皮膚

首先執行adb devices來確保裝置可用,然後啟動Android Studio,選擇一個Android專案或者新建一個專案進入主皮膚,如果你有你的待測App的原始碼,那麼最好進入你自己的App專案中,這樣方便除錯和定位問題。進入專案後,可以看到Android Studio的主皮膚左下角有一個Android標籤: 
這裡寫圖片描述

點選該標籤開啟Android皮膚,如下圖所示: 
這裡寫圖片描述

A:裝置選擇 
B:可監控的App選擇 
C:記憶體的實時資料

重點來看C區域,橫座標記錄從採集開始點到目前已經過去的時間,縱座標是分配給App使用的記憶體總量[Allocated+Free],藍色區域表示已分配[Allocated]使用的的,灰色區域表示空閒[Free]未使用的。在座標軸的右邊可以看見具體數值。

GC

GC就是垃圾回收的意思,我們可以從Memory monitor看到何時發生了GC event,當一個記憶體短時間內發生掉落,我們可以認為發生了GC操作。你也可以手動觸發GC,下圖中的小車子就是觸發GC的按鈕,一旦按下就會回收那些沒被引用的物件(這個地方不能說沒用的物件,因為沒用的物件有可能是記憶體洩漏時的物件,後期會來研究): 
這裡寫圖片描述

Memory Monitor可以發現的問題

Memory Monitor工具為監控工具,是一種發現型或者說監控性質的工具,比如醫生的四大技能[望聞問切],[望]是第一步。這裡的Memory Monitor就是一種[望]的工具,目前我主要用它來看下面幾個記憶體問題: 
1.發現記憶體抖動的場景 
2.發現大記憶體物件分配的場景 
3.發現記憶體不斷增長的場景 
4.確定卡頓問題是否因為執行了GC操作

案例分析

這裡寫圖片描述

上面的第一段標記顯示記憶體突然增加了7M,我們也能看的很清楚,所以這個點我們要去定位了一下問題在哪裡,是Bitmap還是什麼原因造成的,第二段標記是記憶體抖動,很明顯在很短的時間了發生了多次的記憶體分配和釋放。而且在發生記憶體抖動的時候,也能感覺到App的卡頓,可以看出來是由於執行了GC操作造成的。 
記憶體的不斷增加通過Memory monitor很容易看出來,藍色的曲線是一路高歌猛進的,一看便知。

關於記憶體洩漏的問題

Memory Monitor也可以歸納到用於檢測記憶體洩漏的工具,但是我沒這麼做,因為在實際過程中,當洩漏的點每一次很小的時候,你很難發現,沒有Heap Viewer好使。如果洩漏的物件佔用記憶體大的話,也能通過Memory Monitor看出來。

相關文章