Object.JavaFinalize 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.
[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 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.