Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Стеки вызовов полезны для выявления горячих точек ЦП или разделов кода, выполнение которых занимает много времени. Стеки вызовов помогают понять, какая часть кода была выполнена и почему она была вызвана.
В дополнение к временным шкалам использования ЦП и взаимодействий в разделе «Потоки» отображаются кадры для каждого вызова, который выполняет ваше приложение и система. Вот несколько советов по навигации по образцу стека вызовов:
Разверните интересующую цепочку и используйте сочетания клавиш для навигации по кадрам стека. Щелкните кадр стека, чтобы получить подробную информацию о событии и связанных с ним вызовах на панели «Анализ» .
Чтобы отфильтровать определенные типы кадров стека, нажмите «Свернуть кадры» и отметьте типы кадров, которые вы хотите скрыть. При сворачивании кадров они удаляются из разделов « Потоки» и «Анализ» . В зависимости от вашего расследования вы можете захотеть свернуть кадры виртуальной машины Java (например android::AndroidRuntime::start и art::{...} ) и ядра системы (например, [kernel.kallsyms]+{offset} ). Обычно это соответствует сворачиванию фреймов, связанных с [kernel.kallsyms] , /apex/ и /system/* .
Поскольку программа Java/Kotlin обычно выполняется через виртуальную машину Java, когда Android Studio собирает стек вызовов для программы Java/Kotlin, этот стек обычно включает в себя не только код Java/Kotlin, но и собственный код, необходимый для запуска самой программы и чтобы программа разговаривала с системой и оборудованием.
Чтобы перейти к исходному коду, связанному с фреймом стека, щелкните фрейм правой кнопкой мыши и выберите «Перейти к источнику» .
Чтобы выделить кадр стека, связанный с событием в таблице событий, щелкните событие.
Пример собственного кода с использованием командной строки
Внутри Android Studio использует simpleperf для отслеживания собственного кода вашего приложения. Если вы хотите указать дополнительные параметры для Simpleperf, такие как выборка процессоров конкретных устройств или указание длительности выборки с высокой точностью, вы можете использовать simpleperf из командной строки .
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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)."]]