티스토리 뷰

종료자(finalizer)는 예측 불가능하며, 대체로 위험하고, 일반적으로 불필요한다. 종료자는 C++의 소멸자(destructor)와는 다르다는 것을 유념해야 한다. C++의 소멸자는 생성자와 쌍으로 움직이기 때문에 소멸 즉시 호출된다. 하지만 Java에서는 사용되지 않는 객체에 할당된 공간을 GC가 알아서 반환하므로 프로그래머 입장에서 특별히 할 일이 없다. 신경 쓰지 않아도 된다는 말은 다른 말로는 즉시 처리가 되지 않는다는 의미이기도 하다. 따라서 긴급한 작업을 종료자 안에서 처리하면 안 된다.

Java에서는 try-finally를 이용하여 해제되어야 할 상황이라면 객체 종료를 보장하기 위해 반드시 그 즉시 직접 해제해야 한다. Java 1.7부터 try-with-resources 문을 지원하므로 이문 법은 finally 블록을 사용하지 않아도 된다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함