呼叫堆疊範例

呼叫堆疊有助於找出 CPU 熱點,或執行時間過長的程式碼區段。呼叫堆疊有助於瞭解程式碼的哪些部分已執行,以及叫用的原因。

呼叫堆疊範例總覽

如要對呼叫堆疊取樣,請從 Android Studio Profiler 的「Home」分頁標籤中,選取「Find CPU Hotspots (Callstack Sample)」工作。剖析記錄後,您會看到下列視覺化內容:

為了補充 CPU 使用率互動時間軸執行緒部分會顯示應用程式和系統發出的每個呼叫的影格。以下提供幾個瀏覽呼叫堆疊範例的訣竅:

  • 展開感興趣的執行緒,並使用鍵盤快速鍵瀏覽堆疊框架。按一下堆疊框架,即可在「分析」窗格中取得事件和相關呼叫的詳細資料。
  • 如要篩選特定類型的堆疊框架,請按一下「摺疊框架」,然後勾選要隱藏的框架類型。摺疊頁框會將其從「執行緒」和「分析」部分移除。視調查結果而定,您可能想摺疊 Java 虛擬機器 (例如 android::AndroidRuntime::startart::{...}) 和系統核心 (例如 [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