힙 덤프 캡처 (뷰)

Jetpack Compose 구현

이 페이지에는 뷰 기반 레이아웃에 고유한 메모리 누수를 찾고 트리거하는 방법에 관한 정보가 포함되어 있습니다. 힙 덤프 캡처 및 분석에 관한 핵심 정보는 힙 덤프 캡처를 참고하세요.

메모리 누수 찾기

메모리 누수와 연결될 수 있는 클래스를 빠르게 필터링하려면 클래스 드롭다운을 열고 활동/프래그먼트 누수 표시 를 선택합니다. Android 스튜디오 는 앱의 ActivityFragment 인스턴스에서 메모리 누수를 나타낸다고 생각하는 클래스를 표시합니다. 필터에 표시되는 데이터 유형은 다음과 같습니다.

  • 삭제되었지만 아직 참조되고 있는 Activity 인스턴스
  • Fragment 인스턴스에 유효한 FragmentManager가 없지만 아직 참조되고 있습니다.

다음과 같은 상황에서는 필터에 거짓양성이 표시될 수 있습니다.

  • Fragment를 생성하였지만 아직 사용하지 않은 경우
  • Fragment가 캐시되고 있지만 FragmentTransaction의 일부가 아닌 경우

메모리 누수를 더 수동으로 찾으려면 클래스 및 인스턴스 목록을 둘러보고 보관된 크기 가 큰 객체를 찾습니다. 다음과 같은 이유로 인해 발생한 메모리 누수가 있는지 확인하세요.

잠재적인 메모리 누수를 발견하면 인스턴스 세부정보필드참조 탭을 사용하여 관심 있는 인스턴스 또는 소스 코드 줄로 이동합니다.

테스트를 위한 메모리 누수 트리거

앱에서 테스트할 메모리 누수를 유발하려면 다음 중 한 가지 방법으로 누수를 트리거하면 됩니다.

  • 기기가 다양한 활동 상태에 있는 동안 기기를 세로 모드에서 가로 모드로 회전했다가 다시 되돌리기를 여러 번 반복합니다. 기기를 회전하면 앱 에서 Activity, Context 또는 View 객체를 누출하는 경우가 많을 수 있습니다. 시스템에서 Activity를 다시 만들고, 앱에서 이러한 객체 중 하나의 참조를 다른 곳에 유지하는 경우 시스템에서 가비지 컬렉션할 수 없기 때문입니다.
  • 다양한 활동 상태에 있는 동안 개발자의 앱과 다른 앱 간을 전환합니다. 예를 들어 홈 화면으로 이동한 다음 앱으로 돌아옵니다.