← 질문 목록
#92깊이 0

화면이 닫혔는데 객체가 남는 이유는?

모바일심화메모리

정적 필드와 싱글턴과 실행 중 스레드 같은 긴 수명의 객체가 Activity나 View를 계속 참조하기 때문이다. GC Root에서 도달 가능하면 수집되지 않는다.

  • GC Root정적 필드나 실행 중 스레드다
  • 싱글턴·콜백화면 객체를 참조한다
  • Activity·View종료돼도 도달 가능하다

리스너를 등록한 수명에서 해제하고 코루틴과 콜백도 함께 취소한다. UI가 필요 없는 객체에는 Application Context를 사용한다.

ViewModel에는 Activity나 View 참조를 두지 않는다. Fragment의 뷰 바인딩은 onDestroyView에서 비워 뷰 수명과 맞춘다.

덤프에서 누수 객체의 GC Root 경로를 따라간다. 지배 참조를 끊은 뒤 같은 화면을 반복 열고 보유 개수가 줄어드는지 확인한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

화면이 닫혔는데 객체가 남는 이유는?