자바에 소멸자가 있습니까?

자바에서 가비지 수집기는 사용되지 않는 개체를 자동으로 삭제하여 메모리를 확보합니다. 개발자는 삭제 개체를 표시 할 필요가 없습니다,이는 오류가 발생하기 쉽고 메모리 누수에 취약. 그래서 현명한 자바는 소멸자를 사용할 수 없습니다.

개체가 열린 소켓,열린 파일 또는 데이터베이스 연결을 보유하는 경우 가비지 수집기는 이러한 리소스를 회수할 수 없습니다. 우리는 가까운 메서드에서 리소스를 해제 하 고 시도-마지막으로 구문을 사용 하 여 입력/출력 클래스 파일 입력 스트림 및 파일 출력 스트림 등 자바 7 전에 나중에 메서드를 호출할 수 있습니다. 자바 7 로,우리는 인터페이스 자동 폐쇄를 구현하고 짧고 깨끗한 코드를 작성하는 시도-와-자원 문을 사용할 수 있습니다. 따라서 최종 메서드와 클리너 클래스가 안전망 역할을 하기 위해 존재하게 됩니다. 그러나 소멸자와 동등하지 않다는 점에 유의하십시오.

마무리 방법과 클리너 클래스가 모두 즉시 실행된다는 것을 보장하지는 않습니다. 그들은 심지어 유벤투스가 나오기 전에 도망칠 기회도 얻지 못한다. 우리는 시스템을 호출 할 수 있지만.최종화를 위해 보류 중인 개체의 최종화 메서드를 실행하도록 제안하려면 아직 결정적이지 않습니다. 또한 마무리 방법은 성능 문제,교착 상태 등을 유발할 수 있습니다. 우리는 우리의 기사 중 하나를 보면 더 많은 정보를 찾을 수 있습니다:자바에서 마무리 방법에 대한 가이드. 자바 9 로,클리너 클래스는이 단점 때문에 마무리 방법을 대체하기 위해 추가됩니다. 결과적으로 청소 작업을 수행하는 스레드를 더 잘 제어 할 수 있습니다. 그러나 자바 사양은 시스템 동안 청소기의 동작을 지적한다.종료는 구현 특정 자바 청소 작업이 호출 될 것인지 여부를 보장을 제공하지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다.