lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey

Android Profiler를 이용한 앱 성능 측정

Android Studio 3.0에서는 새로운 Android Profiler 창이 Android Monitor 도구를 대체합니다. 이러한 새로운 프로파일링 도구는 앱의 CPU, 메모리 및 네트워크 활동에 대한 실시간 데이터를 제공합니다. 샘플 기반 메서드 추적을 수행하여 코드 실행 시점을 정하고 힙 덤프를 캡처하고 메모리 할당을 보고 네트워크 전송 파일의 세부 정보를 검사할 수 있습니다.

Android Profiler 창을 열려면 다음 단계를 따르세요.

  1. View > Tool Windows > Android Profiler를 클릭합니다(툴바에서 Android Profiler 를 클릭해도 됨).
  2. 그림 1과 같이 Android Profiler 창 맨 위에서 기기 1과 프로파일링하려는 앱 프로세스 2를 선택합니다. USB를 통해 기기를 연결했는데 목록에 표시되지 않을 경우 USB 디버깅을 활성화했는지 확인하세요.

    Android Emulator 또는 루팅된 기기를 사용 중인 경우 Android Profiler는 디버그 가능하지 않은 프로세스가 있더라도 실행 중인 모든 프로세스를 표시합니다. 디버그 가능한 앱을 실행하면 그 프로세스가 기본적으로 선택됩니다.

이제 Android Profiler는 공유된 타임라인 뷰(그림 1)를 표시하며, 이 뷰에는 타임라인이 CPU, 메모리 및 네트워크 사용량에 대한 실시간 그래프와 함께 표시됩니다. 이 창에는 타임라인 확대/축소 컨트롤 3, 실시간 업데이트로 앞으로 이동하기 위한 버튼 4, activity 상태, 사용자 입력 이벤트, 화면 회전 이벤트를 보여주는 이벤트 타임라인 5도 포함됩니다.

Android Profiler를 시작하면 사용자가 기기의 연결을 끊거나 Close 를 클릭할 때까지는 계속 프로파일링 데이터를 수집합니다.

그림 1. Android Profiler 공유 타임라인 뷰

이 공유 타임라인 뷰는 타임라인 그래프만 표시합니다. 자세한 프로파일링 도구에 액세스하려면 검사하려는 성능 데이터에 해당하는 그래프를 클릭하세요. 예를 들어, 힙을 검사하고 메모리 할당을 추적하려고 도구에 액세스하려면 MEMORY 그래프를 클릭하세요. 아래에 링크로 연결된 페이지에는 각각의 해당 프로파일러 창에 대해 더 많은 정보가 나와 있습니다.

하지만 모든 프로파일링 데이터가 기본적으로 표시되는 것은 아닙니다. "Advanced profiling is unavailable for the selected process"라는 메시지가 나타나면 실행 구성에서 고급 프로파일링을 활성화해야 합니다.

각 프로파일링 도구에 대한 추가 문서는 다음을 참조하세요.

고급 프로파일링 활성화

고급 프로파일링 데이터를 표시하려면 Android Studio가 모니터링 로직을 컴파일된 앱에 주입해야 합니다. 고급 프로파일링에서는 다음과 같은 기능을 제공합니다.

  • 모든 프로파일러 창의 이벤트 타임라인
  • Memory Profiler에 할당되는 객체의 수
  • Memory Profiler의 가비지 수집 이벤트
  • Network Profiler의 모든 전송 파일에 대한 세부 정보

고급 프로파일링을 활성화하려면 다음 단계를 따르세요.

  1. Run > Edit Configurations를 선택합니다.
  2. 왼쪽 창에서 앱 모듈을 선택합니다.
  3. Profiling 탭을 클릭한 다음 Enable advanced profiling을 선택합니다.

이제 앱을 다시 빌드하고 실행하여 완전한 프로파일링 기능 세트에 액세스합니다. 하지만 고급 프로파일링을 사용하면 빌드 속도가 느려지므로, 앱 프로파일링을 시작하고 싶을 때만 사용해야 한다는 점에 유의하세요.

참고: 네이티브 코드에는 고급 프로파일링을 사용할 수 없습니다. 앱이 순수한 기본 앱(Java Activity 클래스가 없는 앱)인 경우에는 고급 프로파일링 기능을 사용할 수 없습니다. 앱에서 JNI를 사용하는 경우 이벤트 타임라인, GC 이벤트, Java 할당 객체, Java 기반 네트워크 활동과 같은 일부 고급 프로파일링 기능을 사용할 수 있지만, 네이티브 기반 할당과 네트워크 활동을 검색할 수는 없습니다.