본문 바로가기

공부 기록/Java

[이펙티브 자바 3/E] 아이템7 - 다 쓴 객체 참조를 해제하라

* 다 쓴 참조 : 문자 그대로 앞으로 다시 쓰지 않을 참조

- 가비지 컬렉션 언어에서는 (의도치 않게 객체를 살려두는) 메모리 누수를 찾기가 아주 까다롭다. 객체 참조 하나를 살려두면 가비지 컬렉터는 그 객체뿐 아니라 그 객체가 참조하는 모든 객체(그리고 또 그 객체들이 참조하는 모든 객체...)를 회수해가지 못한다.

===> 해당 참조를 다 썼을 때 null 처리(참조 해제)하면 된다.

 

- 객체 참조를 null 처리하는 일은 예외적인 경우여야 한다.

===> 다 쓴 참조를 해제하는 가장 좋은 방법은 그 참조를 담은 변수를 유효 범위(scope) 밖으로 밀어내는 것이다.


메모리 누수에 주의해야 하는 경우

1. 자기 메모리를 직접 관리하는 클래스

2. 캐시

3. 리스너(listener) 혹은 콜백(callback)


[핵심 정리]

메모리 누수는 철저한 코드 리뷰나 힙 프로파일러 같은 디버깅 도구를 동원해야만 발견되기도 한다. 그래서 예방법을 익혀두는 것이 매우 중요하다.