呼叫堆疊有助於找出 CPU 熱點,或執行時間過長的程式碼區段。呼叫堆疊有助於瞭解程式碼的哪些部分已執行,以及叫用的原因。
呼叫堆疊範例總覽
如要對呼叫堆疊取樣,請從 Android Studio Profiler 的「Home」分頁標籤中,選取「Find CPU Hotspots (Callstack Sample)」工作。剖析記錄後,您會看到下列視覺化內容:
為了補充 CPU 使用率和互動時間軸,執行緒部分會顯示應用程式和系統發出的每個呼叫的影格。以下提供幾個瀏覽呼叫堆疊範例的訣竅:
- 展開感興趣的執行緒,並使用鍵盤快速鍵瀏覽堆疊框架。按一下堆疊框架,即可在「分析」窗格中取得事件和相關呼叫的詳細資料。
- 如要篩選特定類型的堆疊框架,請按一下「摺疊框架」,然後勾選要隱藏的框架類型。摺疊頁框會將其從「執行緒」和「分析」部分移除。視調查結果而定,您可能想摺疊 Java 虛擬機器 (例如
android::AndroidRuntime::start
和art::{...}
) 和系統核心 (例如[kernel.kallsyms]+{offset}
) 的影格。通常這會對應到與[kernel.kallsyms]
、/apex/
和/system/*
相關的影格。
由於 Java/Kotlin 程式通常是透過 Java 虛擬機器執行,因此 Android Studio 收集 Java/Kotlin 程式的呼叫堆疊時,呼叫堆疊通常不只包含 Java/Kotlin 程式碼,還包含執行程式本身,以及程式與系統和硬體通訊時所需的原生程式碼。
- 如要跳至與堆疊框架相關聯的原始碼,請在框架上按一下滑鼠右鍵,然後點選「Jump to source」。
- 如要醒目顯示事件表格中與事件相關聯的堆疊框架,請按一下該事件。
如要瞭解其他視覺化元素,請參閱「記錄系統追蹤記錄」和圖表詞彙。
使用指令列的範例原生程式碼
在內部,Android Studio 會使用 simpleperf 追蹤應用程式的原生程式碼。如要為 Simpleperf 指定額外選項,例如取樣裝置內多少 CPU,或是以高精確度標準來指定取樣時間長度,您可以從命令列中選用 Simpleperf。