Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Stosy wywołań są przydatne do identyfikowania punktów krytycznych wykorzystania CPU, czyli fragmentów kodu, których wykonanie zajmuje dużo czasu. Stosy wywołań pomagają zrozumieć, która część kodu została wykonana i dlaczego została wywołana.
Uzupełnieniem osi czasu Użycie procesora i Interakcje jest sekcja Wątki, która pokazuje klatki dla każdego wywołania wykonywanego przez aplikację i system. Oto kilka wskazówek dotyczących poruszania się po próbce stosu wywołań:
Rozwiń interesujący Cię wątek i użyj skrótów klawiszowych, aby poruszać się po ramkach stosu. Kliknij ramkę stosu, aby uzyskać szczegółowe informacje o wydarzeniu i powiązanych wywołaniach w panelu Analiza.
Aby filtrować określone typy ramek stosu, kliknij Zwiń ramki i zaznacz typy ramek, które chcesz ukryć. Zwijanie ramek powoduje ich usunięcie z sekcji Wątki i Analiza. W zależności od wyników analizy możesz zwinąć ramki z maszyny wirtualnej Java (np. android::AndroidRuntime::start i art::{...}) oraz jądra systemu (np. [kernel.kallsyms]+{offset}). Zwykle odpowiada to zwinięciu ramek związanych z [kernel.kallsyms], /apex/ i /system/*.
Program w języku Java lub Kotlin jest zwykle wykonywany przez wirtualną maszynę Javy. Dlatego, gdy Android Studio zbiera stos wywołań dla takiego programu, zwykle zawiera on nie tylko kod Java lub Kotlin, ale też kod natywny wymagany do uruchomienia programu i do komunikacji z systemem oraz sprzętem.
Aby przejść do kodu źródłowego powiązanego z ramką stosu, kliknij ramkę prawym przyciskiem myszy i wybierz Przejdź do źródła.
Aby wyróżnić w tabeli zdarzeń ramkę stosu powiązaną ze zdarzeniem, kliknij to zdarzenie.
Próbkowanie kodu natywnego za pomocą wiersza poleceń
Android Studio używa wewnętrznie narzędzia simpleperf do śledzenia kodu natywnego aplikacji. Jeśli chcesz określić dodatkowe opcje Simpleperf, takie jak próbkowanie określonych procesorów urządzenia lub określanie czasu próbkowania z dużą dokładnością, możesz użyć Simpleperf z wiersza poleceń.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[null,null,["Ostatnia aktualizacja: 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)."]]