Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Callstack berguna untuk mengidentifikasi hot spot CPU, atau bagian kode yang memerlukan waktu lama untuk dieksekusi. Callstack membantu Anda memahami bagian kode mana yang telah dieksekusi, dan alasan kode dipanggil.
Untuk melengkapi linimasa
Penggunaan CPU dan Interaksi,
bagian Thread menampilkan frame untuk setiap panggilan yang dilakukan oleh aplikasi dan sistem. Berikut beberapa tips untuk menavigasi sampel callstack:
Luaskan rangkaian pesan yang diinginkan dan gunakan
pintasan keyboard
untuk menavigasi frame stack. Klik frame stack untuk mendapatkan detail tentang
peristiwa dan panggilan terkait di panel Analisis.
Untuk memfilter jenis frame stack tertentu, klik Ciutkan frame dan
centang jenis frame yang ingin Anda sembunyikan. Menciutkan frame akan menghapusnya dari bagian Threads dan Analysis. Bergantung pada
penyelidikan Anda, Anda mungkin ingin menciutkan frame dari mesin virtual Java
(misalnya android::AndroidRuntime::start dan art::{...}), dan
kernel sistem (misalnya [kernel.kallsyms]+{offset}). Biasanya, hal ini
sesuai dengan menciutkan frame yang terkait dengan [kernel.kallsyms], /apex/,
dan /system/*.
Karena program Java/Kotlin biasanya dijalankan melalui mesin virtual Java, saat Android Studio mengumpulkan callstack untuk program Java/Kotlin, callstack biasanya tidak hanya menyertakan kode Java/Kotlin, tetapi juga kode native yang diperlukan untuk menjalankan program itu sendiri dan agar program dapat berkomunikasi dengan sistem dan hardware.
Untuk melompat ke kode sumber yang terkait dengan frame stack, klik kanan
frame dan klik Lompat ke sumber.
Untuk menandai frame stack yang terkait dengan peristiwa dalam tabel peristiwa,
klik peristiwa tersebut.
Secara internal, Android Studio menggunakan simpleperf untuk merekam aktivitas
kode native aplikasi Anda. Jika ingin menentukan opsi tambahan untuk Simpleperf, seperti pengambilan sampel CPU perangkat tertentu atau menentukan durasi pengambilan sampel pada akurasi tinggi, Anda dapat menggunakan simpleperf dari command line.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Sample the callstack\n\nCallstacks are useful for identifying *CPU hot spots*, or sections of code that\ntake a long time to execute. Callstacks help you understand which part of the\ncode has been executed, and why it was invoked.\n| **Note:** To sample the callstack, you must deploy your app to a device running Android 8.0 (API level 26) or higher.\n\nCallstack sample overview\n-------------------------\n\nTo sample the callstack,\n[select the **Find CPU Hotspots (Callstack Sample)** task](/studio/profile#start-profiling)\nfrom the Android Studio Profiler **Home** tab. After the recording is parsed you\nsee the following visuals:\n\nTo supplement the\n[**CPU Usage** and **Interactions** timelines](/studio/profile/cpu-profiler),\nthe **Threads** section shows frames for every call that your app and the system\nmakes. Here are some tips for navigating the callstack sample:\n\n- Expand the thread of interest and use [keyboard shortcuts](/studio/profile/cpu-profiler#ui-shortcuts) to navigate the stack frames. Click a stack frame to get details about the event and related calls in the **Analysis** pane.\n- To filter to certain types of stack frames, click **Collapse frames** and check the frame types you want to hide. Collapsing frames removes them from both the **Threads** and **Analysis** sections. Depending on your investigation, you might want to collapse frames from the Java virtual machine (for example `android::AndroidRuntime::start` and `art::{...}`), and the system kernel (for example `[kernel.kallsyms]+{offset}`). Usually this corresponds to collapsing frames related to `[kernel.kallsyms]`, `/apex/`, and `/system/*`.\n\nBecause a Java/Kotlin program typically executes through a Java virtual machine,\nwhen Android Studio collects the callstack for a Java/Kotlin program, the\ncallstack usually includes not just the Java/Kotlin code but also the native\ncode required to run the program itself and for the program to talk with the\nsystem and hardware.\n\n- To jump to the source code associated with a stack frame, right-click the frame and click **Jump to source**.\n- To highlight the stack frame associated with an event in the event table, click the event.\n\nFor information about the other visuals, see\n[Record a system trace](/studio/profile/cpu-profiler) and the\n[chart glossary](/studio/profile/chart-glossary/flame-chart).\n\nSample native code using the command line\n-----------------------------------------\n\nInternally, Android Studio uses [simpleperf](/ndk/guides/simpleperf) to trace\nyour app's native code. If you want to specify additional options for\nSimpleperf, such as sampling specific device CPUs or specifying sampling\ndurations at a high accuracy, you can\n[use simpleperf from the command line](https://android.googlesource.com/platform/system/extras/+/master/simpleperf/doc/README.md)."]]