finalize와 cleaner 메소드가 어떤동작을 하는지 먼저 정리하고 시작해야하는데

finalize 메소드는 최신 자바버전(9+)에서는 없어졌기 때문에 cleaner 위주로 포스팅을 진행하겠다.

 

이번 장에서는 객체의 생명주기를 어느정도 이해해야하고 GC의 작동 원리를 이해하고 보는 것이 중요하다.

지금까지 개발 공부를 해오면서 한번도 효과적인 메모리 관리를 위한 조치를 취해본적이 없어서

사실 이번 장이 크게 와닿지는 않았다.

 

게다가 이번장에서는 결국 finalize와 cleaner를 사용하지 마라! 라고 했기 때문에

앞으로도 쭉 쓸 일은 없지 않을까..?라는 생각이 든다.

 

Item 9 에서 포스팅할 주제인 try-with-resource를 주로 사용하게 될 것같아서 그 부분은 다음 포스팅에서 다뤄 보겠다.

다시 주제로 돌아와서 finalize와 cleaner는 단점 투성이다.

 

간략하게 정리해보면

실행 보장 안됨 -> 신뢰할 수 없음
느리다 -> 성능문제
finlizer 공격 노출 쉽다 -> 보안문제

그렇기 때문에 저자는 close만 네이티브 피어를 회수할 때만 사용하라고 한다.

 

이 챕터는 소멸자와 GC 메모리 관리에 대한 추가적인 지식이 필요할 것같다

Item 7에서 언급했듯이 GC부분은 따로 포스팅을 하겠다.

+ Recent posts