얼마 전에 QA 담당자가 사내 슬랙으로 '30분쯤 쓰면 스크롤이 뚝뚝 끊기는데, 재부팅하면 사라져요' 하고 캡처를 보냈어요. 크래시 로그는 깨끗했습니다. 딱 누수였습니다. LeakCanary로 누수를 탐지하고, 안드로이드 스튜디오 프로파일러로 인스턴스 수를 교차 검증한 실측 일지입니다. 탐지기와 계측기를 어떻게 이어 붙였는지, 범인은 누구였는지 순서대로 풀어볼게요. 크래시 없이 조용히 무거워지다 OOM으로 터지는 이유안드로이드 메모리 누수의 무서운 점은 앱을 바로 죽이지 않는다는 겁니다. 회수됐어야 할 Activity가 힙에 계속 남으면서, GC(가비지 컬렉션)가 매번 헛도는 구조예요. 이게 쌓이면 프레임 하나 그릴 시간을 GC가 갉아먹으면서 스크롤이 끊기고(jank), 결국 메모리 한계를 넘으면 OOM..