語言

Object.JavaFinalize 方法

定義

警告

Override Dispose (bool disposing) for cleanup customization, or use the C# destructor instead. Java's Object.finalize() has been deprecated since JDK 9 and is marked for removal.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

[Android.Runtime.Register("finalize", "()V", "GetJavaFinalizeHandler")]
[System.Obsolete("Override Dispose (bool disposing) for cleanup customization, or use the C# destructor instead. Java's Object.finalize() has been deprecated since JDK 9 and is marked for removal.")]
protected virtual void JavaFinalize();
[<Android.Runtime.Register("finalize", "()V", "GetJavaFinalizeHandler")>]
[<System.Obsolete("Override Dispose (bool disposing) for cleanup customization, or use the C# destructor instead. Java's Object.finalize() has been deprecated since JDK 9 and is marked for removal.")>]
abstract member JavaFinalize : unit -> unit
override this.JavaFinalize : unit -> unit
屬性

例外狀況

備註

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 子類別會 finalize 覆寫處理系統資源或執行其他清理的方法。

的finalize一般契約是,當 Java 虛擬機判定除了完成其他物件或類別完成準備完成的動作外,任何尚未死亡的執行緒已無法再存取此物件時,才會被呼叫。 該 finalize 方法可採取任何動作,包括將該物件重新開放給其他執行緒;然而,通常的 finalize目的是在物件被不可逆地丟棄前執行清理行動。 例如,代表輸入/輸出連線的物件的 finalize 方法,可能會在物件永久丟棄前,執行明確的 I/O 交易來斷開連線。

finalize類別Object方法不會執行特殊動作;它只是正常回傳。 的 Object 子類別可能會覆蓋此定義。

Java 程式語言並不保證會針對任何特定物件呼叫哪finalize個執行緒。 然而,可以保證呼叫 finalize 的執行緒在 finalize 執行時不會持有任何使用者可見的同步鎖。 如果 finalize 方法拋出未捕捉的例外,該例外會被忽略,該物件的最終化即告終止。

在物件呼叫該方法後finalize,直到 Java 虛擬機再次判定該物件尚未死亡的執行緒無法再存取該物件,包括其他物件或類別可能的動作,否則不會再採取進一步行動。 此時該物件可被丟棄。

對於任何特定物件,Java 虛擬機不會多次呼叫此finalize方法。

方法拋出 finalize 的任何例外都會停止該物件的最終化,但其他情況下會被忽略。

的 java.lang.Object.finalize()Java 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於