* 다 쓴 참조 : 문자 그대로 앞으로 다시 쓰지 않을 참조
- 가비지 컬렉션 언어에서는 (의도치 않게 객체를 살려두는) 메모리 누수를 찾기가 아주 까다롭다. 객체 참조 하나를 살려두면 가비지 컬렉터는 그 객체뿐 아니라 그 객체가 참조하는 모든 객체(그리고 또 그 객체들이 참조하는 모든 객체...)를 회수해가지 못한다.
===> 해당 참조를 다 썼을 때 null 처리(참조 해제)하면 된다.
- 객체 참조를 null 처리하는 일은 예외적인 경우여야 한다.
===> 다 쓴 참조를 해제하는 가장 좋은 방법은 그 참조를 담은 변수를 유효 범위(scope) 밖으로 밀어내는 것이다.
메모리 누수에 주의해야 하는 경우
1. 자기 메모리를 직접 관리하는 클래스
2. 캐시
3. 리스너(listener) 혹은 콜백(callback)
[핵심 정리]
메모리 누수는 철저한 코드 리뷰나 힙 프로파일러 같은 디버깅 도구를 동원해야만 발견되기도 한다. 그래서 예방법을 익혀두는 것이 매우 중요하다.
'공부 기록 > Java' 카테고리의 다른 글
[이펙티브 자바 3/E] 아이템9 - try-finally보다는 try-with-resources를 사용하라 (0) | 2023.07.19 |
---|---|
[이펙티브 자바 3/E] 아이템8 - finalizer와 cleaner 사용을 피하라 (0) | 2023.07.19 |
[이펙티브 자바 3/E] 아이템6 - 불필요한 객체 생성을 피하라 (0) | 2023.07.06 |
[이펙티브 자바 3/E] 아이템5 - 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2023.07.06 |
[이펙티브 자바 3/E] 아이템4 - 인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2023.07.02 |