메모리 관리에 대해서 언급했으니 이번에는 객체 소멸자에 대해서 알아보자.
예측할 수 없고, 상황에 따라 위험할 수 있다.
finalizer의 대안이지만 여전히 예측할 수 없고, 느리고, 일반적으로 불필요하다.
AutoCloseable
을 구현하고 close()
를 호출하는 방법으로 자원을 종료시킬 수 있다.
close() 를 호출하지 않는 경우 늦게라도 자원을 회수하는 것이 낫기 때문에 안전망 역할로 사용할 수 있다.
네이티브 피어
: 일반 자바 객체가 네이티브 메서드를 통해 기능을 위임한 네이티브 객체
네이티브 피어
는 자바 객체가 아니기 때문에 CG 로 관리할 수 없다. 하지만, close()
도 사용이 가능하기 때문에 이를 고민해서 사용하면 된다.
단, 네이티브 피어가 심각한 자원을 가지고 있지 않고 성능 저하를 감당할 수 있을 때에만 해당된다.