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 メソッドによってキャッチされない例外がスローされた場合、例外は無視され、そのオブジェクトの最終処理は終了します。

オブジェクトに対して finalize メソッドが呼び出された後、Java 仮想マシンが、まだ終了していないスレッドからこのオブジェクトにアクセスできる手段がなくなったことを再び判断するまで、これ以上のアクションは実行されません。これには、最終処理の準備ができている他のオブジェクトまたはクラスによる可能なアクションも含まれます。 その時点で、オブジェクトは破棄される可能性があります。

メソッドは finalize 、特定のオブジェクトに対して Java 仮想マシンによって複数回呼び出されることはありません。

メソッドによってスローされた finalize 例外により、このオブジェクトの最終処理は停止されますが、それ以外の場合は無視されます。

java.lang.Object.finalize()Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象