앱의 코드 실행 중에 호출된 Java/Kotlin 메서드를 기록하면 특정 시점의 호출 스택과 CPU 사용량을 Java/Kotlin 메서드로 필터링하여 확인할 수 있습니다. 이 데이터는 실행하는 데 시간이 오래 걸리거나 시스템 리소스를 많이 사용하는 코드 섹션을 식별하는 데 유용합니다. 네이티브 호출 프레임을 포함한 전체 호출 스택을 보려면 호출 스택 샘플 프로파일링 작업을 사용하세요.
Android 스튜디오 프로파일러를 사용하여 Java/Kotlin 메서드를 기록할 때 다음 기록 유형을 선택할 수 있습니다.
추적: 각 메서드 호출의 시작과 끝에서 타임스탬프를 기록하기 위해 런타임에 앱을 계측합니다. 타이밍 정보를 비롯한 메서드 추적 데이터를 생성하기 위해 타임스탬프가 수집되고 비교됩니다. 호출되는 정확한 메서드에 관심이 있다면 트레이싱을 사용해야 합니다. 트레이싱은 집약적인 프로세스이므로 이 옵션을 사용하는 경우 녹화 시간을 5초 이하로 유지하는 것이 좋습니다.
샘플링 (레거시): 앱의 Java 또는 Kotlin 기반 코드가 실행되는 동안 앱의 호출 스택을 자주 캡처합니다. 프로파일러는 캡처된 데이터 세트를 비교하여 앱의 Java 또는 Kotlin 기반 코드 실행에 관한 타이밍 및 리소스 사용 정보를 얻습니다. 호출되는 정확한 메서드보다 타이밍이 더 중요한 경우 샘플링을 사용해야 합니다.
CPU 사용량: 앱의 CPU 사용량을 시간별로 사용 가능한 총 CPU 용량의 비율로 표시합니다. CPU 사용량에는 Java/Kotlin 메서드뿐만 아니라 네이티브 코드도 포함됩니다. 타임라인의 섹션을 강조 표시하여 해당 기간의 세부정보를 필터링합니다.
상호작용: 사용자 상호작용 및 앱 수명 주기 이벤트를 타임라인을 따라 표시합니다.
스레드: 앱이 실행되는 스레드를 표시합니다. 대부분의 경우 앱을 나타내는 최상위 스레드에 먼저 집중하는 것이 좋습니다.
시간이 가장 많이 걸리는 메서드나 호출 스택을 식별하려면 플레임 차트 또는 하향식 차트를 사용하세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(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-27(UTC)"],[],[],null,["# Record Java/Kotlin methods\n\nRecording the Java/Kotlin methods called during your app's code execution lets\nyou see the callstack and CPU usage at a given time, filtered to Java/Kotlin\nmethods. This data is useful for identifying sections of code that take a long\ntime or a lot of system resources to execute. If you want a full view of the\ncallstack including native call frames, use the\n[callstack sample](/studio/profile/sample-callstack)\nprofiling task.\n\nWhen you record Java/Kotlin methods using the Android Studio profiler, you can\nchoose the recording type:\n\n- Tracing: Instruments your app at runtime to record a timestamp at the\n beginning and end of each method call. Timestamps are collected and compared\n to generate method tracing data, including timing information. You should use\n tracing when you care about the exact methods being called. Because tracing is\n an intensive process, if you're using this option it's best to keep your\n recording around five seconds or less.\n\n | **Note:** The timing information from tracing might deviate from production due to the overhead introduced by the instrumentation itself.\n- Sampling (legacy): Captures your app's call stack at frequent intervals during\n your app's Java- or Kotlin-based code execution. The profiler compares sets of\n captured data to derive timing and resource usage information about your app's\n Java- or Kotlin-based code execution. You should use sampling if you care more\n about timing than the exact methods being called.\n\n| **Note:** If you're interested in tracing methods with lifecycles so short that they're likely to begin and end in between a sampling interval, and thus get missed by the profiler, you should try tracing instead.\n\nJava/Kotlin methods overview\n----------------------------\n\nAfter you [run the **Find CPU Hotspots** task](/studio/profile#start-profiling)\nthe Android Studio Profiler provides the following information:\n\n- **CPU Usage**: Shows CPU usage of your app as a percentage of total available CPU capacity by time. Note that the CPU usage includes not only Java/Kotlin methods but also native code. Highlight a section of the timeline to filter to the details for that time period.\n- **Interactions**: Shows user interaction and app lifecycle events along a timeline.\n- **Threads**: Shows the threads that your app runs on. In most cases, you'll want to first focus on the topmost thread that represents your app.\n\nTo identify the methods or call stacks that take the most time, use the\n[flame chart](/studio/profile/chart-glossary/flame-chart) or\n[top down](/studio/profile/chart-glossary/top-bottom-charts) chart."]]