본문 바로가기
공부/JAVA

이펙티브 자바 2장 규칙 6. 유효기간이 지난 객체참조는 폐기하라

by 미네밍 2021. 2. 17.

Effective Java 2장 객체의 생성과 삭제

규칙 6. 유효기간이 지난 객체 참조는 폐기하라


  • 자바와 같은 언어에서는 GC가 메모리 관리를 잘 해주기 때문에, 메모리 관리에 대한 필요성을 망각할 수 있음.

  • 하지만, 메모리 누수가 생기는 경우가 존재하며, 다시 이용되지 않을 참조에 대해 아직 사용하고 있다고 생각하고 쓰레기 수집기가 처리하지 않음.

자체적으로 관리하는 메모리가 있는 클래스를 만들 때는, 메모리 누수가 발생하지 않도록 주의해야 하며, 사용하지 않는 원소 안에 있는 객체참조는 null 로 변경해주어야 함.

보통, 캐시(cache) 의 경우, 메모리 누수가 자주 발생함. -> WeakHashMap사용하면 됌. 캐시를 구성할 때 캐시 바깥에서 키를 참조하고 있을 때만 값을 보관하면 될 때 쓸 수 있는 전략

메모리 누수가 많이 발생하는 곳은 리스너 등의 Callback이다. Callback 등록기능을 제공하는 API를 사용하는 클라이언트가 이를 명시적으로 제거하지 않았을 경우 메모리 점유상태로 남아있게 된다. -> WeakHashMap 을 통한 해결 가능하다. (약한참조만 저장)

댓글