Item6은 객체 참조 해제에 관한 내용입니다.
Java같은 경우에는 C와 C++과 다르게 메모리를 직접 관리하지 않아도 알아서 회수해가니 메모리 관리가 필요없다! 라고 생각하시는 분들이 많을거라고 생각합니다.
저 또한 그렇게 생각하고있었습니다. 어차피 다 관리해주는데?? 라고 생각했습니다
이말은 즉 메모리 관리에 더 이상 신경쓰지 않아도 된다는 말이 맞는말이 아니라고 생각합니다.
도서에는 스택을 예로들어 소스코드와 함께 나와있지만 글로만 간단하게 중요 포인트를 집고 넘어가겠습니다.
간단하게 말하면 다음과 같다 .
다 사용한 참조객체는 null처리 하여 참조 해제 하면된다.
그렇다고 무작정 객체를 다 사용하자마자 null 처리를 하는것은 필요 이상으로 지저분해지게 만들어 바람직하지 않다.
그렇다면 언제 언제처리해야할까에 대한 의문이 생기게 됩니다 .
그 방법은 해당객체가 비활성 영역이 되는순간 null처리를 해서 객체를 더는 사용하지 않을것임을 GC에게 알려주는 방법입니다.
핵심정리
메모리 누수는 잘 드러나지 않아 수년 또는 수십년간 파악하지 못하고 잠복할 수도 있다.
이런 누수는 철저한 코드 리뷰나 힙 프로파일러 같은 디버깅 도구를 동원해야 한다.
이러한 문제를 위해 예방하는 방법은 매우 중요하다.