필요가 끝나도 남는 자료
화면을 닫은 뒤에도 그 화면의 자료가 전역 목록에 계속 남아 있다고 하자. 프로그램은 더 이상 이를 사용하지 않지만 목록의 참조 때문에 메모리가 유지될 수 있다. 이런 자료가 화면을 열 때마다 늘어나면 장시간 실행에서 문제가 커질 수 있다.
관리 방식에 따른 차이
수동 메모리 관리에서는 할당한 영역을 적절한 시점에 해제하지 않는 일이 원인이 될 수 있다. 자동 회수 환경에서는 회수기가 접근 가능한 객체를 여전히 필요하다고 취급할 수 있다. 따라서 자동 회수 기능이 있다고 응용 프로그램의 모든 누수가 사라지지는 않는다.
사용량 증가와 구분하기
메모리가 늘었다는 사실만으로 누수라고 단정할 수는 없다. 정상적인 캐시나 처리 중인 작업이 늘어난 것일 수도 있으며, 해제한 메모리를 할당기가 즉시 운영체제에 돌려주지 않는 경우도 있다. 작업이 끝난 뒤에도 어떤 객체가 왜 남는지 확인해야 한다.
원인을 좁히는 방법
비슷한 작업을 반복하면서 사용량과 살아 있는 객체의 변화를 비교하면 단서를 얻을 수 있다. 보유 경로를 조사해 불필요한 전역 참조와 구독, 정리되지 않은 작업을 살펴본다. 단순히 메모리 한도를 늘리는 것은 원인을 제거하는 방법과 다르다.