今年早些時候as升級到了3.0版本,自己前兩天升級了,發現之前我們熟悉的 Android Monitor 不在了,取而代之的是Android Profiler,就參照官方文件過了一遍。
1:Android Profiler的是使用流程:
1.點選工具欄的圖示即可開啟
在Android Profiler視窗的頂部,如圖所示,選擇裝置我們想要檢視對應工具詳細的分析工具,只要單擊效能資料相對應的圖即可。下看看對應工具詳細的使用。
2:記憶體工具
2.1記憶體工具簡述(Memory Profiler)
我們開啟Memory Profiler後介面如下圖(圖片來自官網)
如圖所示,記憶體剖析器的預設檢視包括以下內容:2.2:記憶體計算指標
根據Android系統,你在記憶體分析器的頂部看到的數字(如下圖)基於你的應用所提交的所有私有記憶體頁面。此計數不包括與系統或其他應用程式共享的頁。
記憶體類別如下:- Java:從Java或Kotlin程式碼中分配的物件的記憶體
- Native:從C或c++程式碼中分配的物件的記憶體,即使你沒有在app中使用c++,你可能會看到一些本地記憶體,因為Android框架使用Native記憶體來處理各種任務,比如處理影象資產和其他圖形——即使你寫的程式碼是Java或Kotlin
- Graphics:用於圖形緩衝區佇列的記憶體用於顯示螢幕上的畫素,包括GL表面、GL紋理等。(注意,這是與CPU共享的記憶體,而不是專用的GPU記憶體)
- Stack:在你的應用程式中,Native和Java棧使用的記憶體。這通常與你的應用程式執行的執行緒數有關
- Code:您的應用程式用於程式碼和資源的記憶體,如dex位元組碼,優化或編譯的dex程式碼。所以庫和字型
- Other:應用程式使用的記憶體,系統不確定如何分類
- Allocated:應用程式分配的Java/Kotlin物件的數量。這並不計算用C或c++分配的物件
注意:當前應用程式中,native記憶體統計值可能會偏大,因為分析工具的一部記憶體也被算進去了,多達10MB的記憶體被新增到~100k物件,在未來版本的工具中,這些數字將從您的資料中過濾出來。
2.3:檢視記憶體分配情況
單擊工具欄記錄記憶體分配在記憶體分析器 我們想要檢視某一時刻程式的記憶體分配情況也很簡單,如下圖:
最後的介面如下圖2.4 捕獲heap dump
heap dump顯示在你捕獲heap dump時應用程式中的哪些物件正在使用記憶體,特別是在擴充套件的使用者會話之後,heap dump可以通過顯示仍在記憶體中的物件來幫助識別記憶體洩漏。一旦捕獲heap dump,可以檢視以下內容:
- 應用分配了哪些型別的物件,以及每個物件的數量
- 每個物件使用多少記憶體。
- 每個物件的引用都被儲存在你的程式碼中。
- 呼叫堆疊分配物件的位置,(當您在錄製分配時捕獲heap dump 時,呼叫堆疊當前僅在Android 7.1中使用堆轉儲時才可用。
要捕獲heap dump,在Memory Profiler工具欄中單擊Dump Java heap按鈕即可 在轉儲堆時,Java記憶體量可能會暫時增加,因為堆轉儲發生在和你的應用程式相同的程式,並需要一些記憶體來收集資料,heap dump出現在記憶體時間線下方,顯示了堆中的所有型別,如圖下圖所示。
在圖中可以看到Class Name列表,,在列表中可以看到以下資訊:- Alloc Count:堆中的分配數量。
- Native Size:此物件型別使用的Native記憶體總量(以位元組為單位),此列僅適用於Android 7.0及更高版本。 你會在這裡看到一些在Java中分配的物件的記憶體,因為Android為一些框架類(比如Bitmap)使用本地記憶體。
- Shallow Size:此物件型別使用的Java記憶體總量(以位元組為單位)
- Retained Size:由於此類的所有例項而保留的記憶體總大小(以位元組為單位)在class 列表頂部,可以使用左側的下拉選單在下列堆轉儲之間切換
- Default heap:當系統沒有指定堆時。
- App heap:你的應用程式分配記憶體的主要堆。
- Image heap:系統引導映像,包含在引導期間預載入的類,這裡的分配保證不會移動或消失,
- Zygote heap:Android系統中的應用程式程式分支的寫入時複製堆。
2.5 將 heap dump 儲存為 HPROF
如果你想儲存 heap dump為日後檢視,匯出heap dump到一個HPROF檔案的話,如需要點選 Export capture to file按鈕,如下圖
如果你需要從Android HPROF檔案格式轉換為Java SE HPROF格式,可以使用hprof-conv工具進行轉化,它的位置在 android_sdk/platform-tools/目錄下,執行hprof-conv命令hprof-conv heap-original.hprof heap-converted.hprof
複製程式碼
3:CPU分析工具(CPU Profiler)
當你開啟CPU分析器,它會立即開始顯示應用程式的CPU使用率和執行緒的活動,如下圖:
CPU Profiler的預設檢視包含以下內容:- 綠色:執行緒處於活動狀態或準備好使用CPU。也就是說,它處於“執行”或“可執行”狀態。
- 黃色:執行緒處於活動狀態,但它正在等待I / O操作(例如磁碟或網路I / O),然後才能完成工作。
- 灰色:執行緒正在休眠,不佔用任何CPU時間。當執行緒需要訪問尚不可用的資源時,有時會發生這種情況。執行緒進入自願睡眠,或者核心使執行緒進入休眠狀態,直到需要的資源變為可用。
-
Sampled(取樣):一個預設配置,可以在應用程式執行期間頻繁地捕獲應用程式的呼叫堆疊。分析器比較捕獲的資料集合以獲取關於應用程式碼執行的時間和資源使用資訊。基於抽樣的跟蹤的一個固有問題是,如果您的應用程式在捕獲呼叫堆疊之後輸入方法,並在下次捕獲之前退出該方法,則該方法呼叫不會被分析器記錄。如果您對如此短的生命週期跟蹤方法感興趣,則應使用檢測跟蹤。
-
Instrumented:預設配置,在執行時測試您的應用程式,以在每個方法呼叫的開始和結束時記錄一個時間戳。收集時間戳並進行比較,以生成方法跟蹤資料,包括定時資訊和CPU使用情況。請注意,與每種方法相關的開銷都會影響執行時效能,並可能影響分析資料 - 對於生命週期相對較短的方法來說,這一點更為明顯。此外,如果您的應用程式在很短的時間內執行大量方法,分析器可能會快速超出其檔案大小限制,並且無法記錄任何進一步的跟蹤資料。
-
Edit configurations:允許您更改上述取樣和檢測記錄配置的某些預設設定,並將其儲存為自定義配置。
4:網路分析工具(Network Profiler)
網路分析工具比較簡單,介面如下圖:
視窗的頂部的