나는 많은 신인 Java 질문을 읽었 finalize()
으며 아무도 finalize ()가 리소스를 정리하는 신뢰할 수없는 방법이라는 것을 아무도 분명히 알지 못했다는 것을 알게되었습니다. 누군가 Connections를 정리하는 데 사용한다는 의견을 보았습니다 .Connection이 닫혔다는 보장에 가까워 질 수있는 유일한 방법은 마침내 try (catch)를 구현하는 것이므로 정말 무섭습니다.
CS에서 교육을받지는 않았지만 지금은 거의 10 년 동안 전문적으로 Java 프로그래밍을 해왔으며 구현 한 사람을 본 적이 없습니다. finalize()
프로덕션 시스템에서 하는 적이 없습니다. 그렇다고해서 그것이 용도가 없거나 내가 함께 일한 사람들이 올바르게하고 있다는 것을 의미하지는 않습니다.
그래서 제 질문은 어떤 유스 케이스가 구현에 있는지입니다. finalize()
언어 내의 다른 프로세스 또는 구문을 통해보다 안정적으로 처리 할 수없는 을 있습니까?
Java 교과서를 반복하거나 특정 시나리오 나 경험을 제공하십시오. 그렇지 않으면이 질문의 의도가 아닌 finalize의 의도 된 용도로는 충분하지 않습니다.
finalize()
. 그러나 호출자를 대신하여 네이티브 리소스를 관리하는와 같은 플랫폼 라이브러리 코드SocketInputStream
는 리소스 누수의 위험을 최소화하기 위해 시도합니다 (또는 PhantomReference
나중에 추가 된 등의 동일한 메커니즘을 사용 합니다). 개발자의 99.9999 %가 결코 개발자를 쓰지 않더라도 말입니다.