다음을 통해 공유


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 메서드에서 catch되지 않은 예외가 throw되면 예외가 무시되고 해당 개체의 종료가 종료됩니다.

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

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

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

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

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상