從測試裝置擷取設定檔或從後端下載設定檔後,您可以在 Perfetto UI 中開啟檔案,查看時間軸、執行緒狀態和記憶體保留圖表。本頁面說明如何瀏覽使用 ProfilingManager 擷取的遮蓋系統追蹤記錄和 Java 記憶體快照資料。
以視覺化方式呈現系統追蹤記錄
在 Perfetto UI 中開啟 .perfetto-trace 檔案,檢查 CPU 和執行緒活動隨時間的變化。

為保護使用者隱私,ProfilingManager 會將所有其他程序的 CPU 活動合併為單一 OtherProcesses 追蹤記錄,藉此遮蓋系統追蹤記錄。檢查這個合併軌跡,仍可判斷應用程式速度緩慢的原因是內部瓶頸,還是整體裝置負載。
圖 2 醒目顯示經過遮蓋的系統追蹤記錄主要部分:

- CPU 清單:顯示裝置上所有可用的處理器。
- CPU tasks:顯示各 CPU 執行的執行緒。
- 其他程序檢視畫面:顯示其他程序耗用的 CPU 資源。
- Process View:顯示應用程式的程序。
- Threads View:顯示程序中執行的執行緒及其執行緒狀態 (可執行 (R)、執行中 (R)、休眠 (S)、不中斷休眠 (D)),這些狀態會直接對應至 Linux 程序狀態。
- 追蹤記錄切片:這個部分會顯示應用程式開發人員或架構新增的追蹤記錄註解。這類註解包含
Trace.beginSection和Trace.endSection之間的運算。
如要進一步瞭解 Perfetto UI 和追蹤記錄視覺化,請參閱 Perfetto 文件。
以圖表呈現 Java 記憶體快照資料
使用 PROFILING_TYPE_JAVA_HEAP_DUMP 擷取 Java 記憶體快照資料後,請在 Perfetto UI 中開啟產生的 .perfetto-java-heap-dump 檔案,找出記憶體流失問題或最佳化記憶體用量。在「Heapdump Explorer」中,您可以探索堆積圖、檢查累積物件大小的火焰圖,以及瀏覽類別、物件和支配項,如圖 3 所示。

ProfilingManager 記憶體快照資料與 HPROF 轉儲的差異
與標準 .hprof 記憶體快照資料 (例如使用 Debug.dumpHprofData 或在 Android Studio 中擷取的資料) 不同,ProfilingManager 會擷取 Perfetto ART 記憶體快照資料 (.perfetto-java-heap-dump)。ProfilingManager 不會傾印原始記憶體內容,而是記錄物件保留圖表和大小中繼資料,同時省略儲存在物件中的原始資料:
- 收集的資料:
- 類別和類型:類別名稱、父類別階層、類別載入器、執行個體大小和參照類型 (例如一般類別、陣列、字串,或弱、軟、終結器和虛擬參照)。
- 物件執行個體和大小:每個物件的淺層大小 (
self_size)、堆積區域 (HEAP_TYPE_APP、HEAP_TYPE_ZYGOTE或HEAP_TYPE_BOOT_IMAGE),以及透過NativeAllocationRegistry註冊的相關聯原生記憶體。 - 參照和 GC 根層級:垃圾收集根層級 (例如 JNI 全域和本機、Java 堆疊框架和執行緒物件) 和欄位層級參照鏈結,顯示哪個物件保留另一個物件,以及透過哪個欄位名稱。
- 選取大小中繼資料:特定架構類型的非機密中繼資料,例如
Bitmap維度 (mWidth和mHeight)。
- 省略內容:實際原始欄位值、
String字元內容,以及原始陣列酬載 (byte[]、char[]和其他原始陣列)。省略原始物件內容可保護正式版裝置上的使用者隱私,並大幅縮減 dump 檔案的大小。
後續步驟
除了在 Perfetto UI 中進行視覺檢查外,您也可以使用 PerfettoSQL 查詢設定檔、大量分析追蹤記錄,或使用 AI 分析設定檔。