728x90
Item6은 객체 참조 해제에 관한 내용입니다.
Java같은 경우에는 C와 C++과 다르게 메모리를 직접 관리하지 않아도 알아서 회수해가니 메모리 관리가 필요없다! 라고 생각하시는 분들이 많을거라고 생각합니다.
_ 저 또한 그렇게 생각하고있었습니다. 어차피 다 관리해주는데?? 라고 생각했습니다 _
이말은 즉 메모리 관리에 더 이상 신경쓰지 않아도 된다는 말이 맞는말이 아니라고 생각합니다.
도서에는 스택을 예로들어 소스코드와 함께 나와있지만 글로만 간단하게 중요 포인트를 집고 넘어가겠습니다.
간단하게 말하면 다음과 같다 .
다 사용한 참조객체는 null처리 하여 참조 해제 하면된다.
그렇다고 무작정 객체를 다 사용하자마자 null 처리를 하는것은 필요 이상으로 지저분해지게 만들어 바람직하지 않다.
그렇다면 언제 언제처리해야할까에 대한 의문이 생기게 됩니다 .
그 방법은 해당객체가 비활성 영역이 되는순간 null처리를 해서 객체를 더는 사용하지 않을것임을 GC에게 알려주는 방법입니다.
핵심정리
메모리 누수는 잘 드러나지 않아 수년 또는 수십년간 파악하지 못하고 잠복할 수도 있다.
이런 누수는 철저한 코드 리뷰나 힙 프로파일러 같은 디버깅 도구를 동원해야 한다.
이러한 문제를 위해 예방하는 방법은 매우 중요하다.
728x90
반응형
'Java' 카테고리의 다른 글
[EffectiveJava] Item10 equals는 일반 규약을 지켜 재정의하라 (0) | 2020.12.16 |
---|---|
[EffectiveJava] Item 9 try-finally 보다는 try-with-resources를 사용하라 (0) | 2020.12.12 |
[EffectiveJava] Item6 불필요한 객체 생성을 피하라 (0) | 2020.12.10 |
[Effective Java] Item5 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (0) | 2020.12.10 |
[Effective java] Item4 인스턴스화를 막으려거든 private 생성자를 사용하라 (0) | 2020.12.10 |
댓글