Object.JavaFinalize 메서드

정의

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

[Android.Runtime.Register("finalize", "()V", "GetJavaFinalizeHandler")]
protected virtual void JavaFinalize ();
[<Android.Runtime.Register("finalize", "()V", "GetJavaFinalizeHandler")>]
abstract member JavaFinalize : unit -> unit
override this.JavaFinalize : unit -> unit
특성

예외

설명

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다. 하위 클래스는 시스템 리소스를 finalize 삭제하거나 다른 정리를 수행하기 위해 메서드를 재정의합니다.

의 일반적인 계약은 finalize Java&거래할 때 호출된다는 것입니다. 가상 머신은 완료할 준비가 된 다른 개체 또는 클래스의 종료에 의해 수행된 작업의 결과를 제외하고 아직 종료되지 않은 스레드에서 이 개체에 액세스할 수 있는 방법이 더 이상 없다고 결정했습니다. 메서드는 finalize 다른 스레드에서 이 개체를 다시 사용할 수 있도록 하는 등의 작업을 수행할 수 있습니다. 그러나 의 일반적인 목적은 finalize개체가 취소할 수 없게 삭제되기 전에 정리 작업을 수행하는 것입니다. 예를 들어 입력/출력 연결을 나타내는 개체에 대한 finalize 메서드는 개체가 영구적으로 삭제되기 전에 명시적 I/O 트랜잭션을 수행하여 연결을 끊을 수 있습니다.

클래스 Object 의 메서드는 finalize 특별한 작업을 수행하지 않고 일반적으로 반환됩니다. 의 하위 클래스는 이 정의를 재정의 Object 할 수 있습니다.

Java 프로그래밍 언어는 지정된 개체에 대해 메서드를 호출할 스레드를 finalize 보장하지 않습니다. 그러나 finalize를 호출하는 스레드는 finalize가 호출될 때 사용자가 볼 수 있는 동기화 잠금을 보유하지 않습니다. finalize 메서드에서 catch되지 않은 예외를 throw하면 예외가 무시되고 해당 개체의 종료가 종료됩니다.

개체에 finalize 대해 메서드를 호출한 후에는 Java 가상 머신이 완료할 준비가 된 다른 개체 또는 클래스의 가능한 작업을 포함하여 아직 종료되지 않은 스레드에서 이 개체에 액세스할 수 있는 방법이 더 이상 없다고 다시 결정할 때까지 추가 작업이 수행되지 않습니다. 이때 개체는 삭제될 수 있습니다.

메서드는 finalize 지정된 개체에 대해 Java 가상 머신에서 두 번 이상 호출되지 않습니다.

메서드에서 throw된 예외로 finalize 인해 이 개체의 종료가 중지되지만, 그렇지 않으면 무시됩니다.

에 대한 Java 설명서입니다 java.lang.Object.finalize().

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

적용 대상