1. 程式人生 > 實用技巧 >Android記憶體分析工具集【4】Android Studio Profiler Memory

Android記憶體分析工具集【4】Android Studio Profiler Memory

Memory Profiler是Android Profiler的一個元件, 用於幫助分析記憶體洩露和記憶體抖動的問題。

Memory Profiler的功能包括:

展示應用記憶體使用情況的實時影象、抓取記憶體的dump資訊、強制垃圾回收及追蹤記憶體分配。

2.1 開啟步驟

開啟Memory Profiler的步驟為:

依次點選Android Studio的View → Tool Windows → Android Profiler,

或直接點選工具欄Android Profiler對應的圖示

2、PC連線Android終端後,在Android Profiler對應的區域選擇接的裝置和需要監控的程序:

3、點選Android Profiler介面中MEMORY區域的任意位置,即可開啟Memory Profiler,如下圖所示:

介面介紹
開啟Memory Profiler後,主介面如下所示(為了方便,這裡直接盜取Android技術文件中的圖):

其中:
標註1對應的按鍵用於強制記憶體回收。

標註2對應的按鍵用於抓取程序記憶體的dump資訊。

標註3對應的按鍵用於記錄記憶體的分配資訊(連線Android 7.1及以下才會有此按鍵)。
初次點選時,對應統計的開始時間點;再次點選時,對應統計的結束時間點。
程序在兩個時間點之間的記憶體分配資訊,將被Memory Profiler記錄和分析。

標註4對應的區域用於縮放時間軸。

標註5對應的按鍵用於顯示實時的記憶體資料。

標註6對應的區域用於記錄事件發生的時間點及大致持續的時間(例如activity狀態改變、使用者操作介面等事件)。

標註7對應的區域用於顯示記憶體使用情況對應的時間軸(與標註6結合,就可以看出各事件帶來的記憶體變化情況)。
需要說明的是,標註7對應區域顯示的內容包括:
不同型別記憶體佔用情況對應的影象;
分配物件數量對應的短畫線;
記憶體回收事件發生的時機。

2.3 統計的資料型別及含義
Memory Profiler主要根據Android系統提供的資訊,
統計app獨自佔用記憶體,即不統計app與系統或其它app共有的記憶體。

Memory Profiler統計記憶體的種類如下圖所示:


如上圖所示,其中:
Java表示Java程式碼或Kotlin程式碼分配的記憶體;

Native表示C或C++程式碼分配的記憶體(即使App沒有native層,呼叫framework程式碼時,也有可能觸發分配native記憶體);

Graphics表示影象相關快取佇列佔用的記憶體;

Stack表示native和java佔用的棧記憶體;

Code表示程式碼、資原始檔、庫檔案等佔用的記憶體;

Others表示無法明確分類的記憶體;

Allocated表示Java或Kotlin分配物件的數量(Android8.0以下時,僅統計Memory Profiler啟動後,程序再分配的物件數量;
8.0以上時,由於系統內建了統計工具,Memory Profiler可以得到整個app啟動後分配物件的數量)。

轉自:https://blog.csdn.net/Gaugamela/article/details/79027538