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 が呼び出されたときにユーザーに表示される同期ロックを保持しないことが保証されます。 finalize メソッドによってキャッチされない例外がスローされた場合、例外は無視され、そのオブジェクトの最終処理が終了します。
オブジェクトに finalize
対してメソッドが呼び出された後、Java 仮想マシンが、終了する準備ができている他のオブジェクトまたはクラスによる可能なアクションを含め、まだ停止していないスレッドからこのオブジェクトにアクセスできる手段がなくなったと判断するまで、それ以上のアクションは実行されません。 その時点で、オブジェクトは破棄される可能性があります。
この finalize
メソッドは、特定のオブジェクトに対して Java 仮想マシンによって複数回呼び出されることはありません。
メソッドによって finalize
スローされた例外により、このオブジェクトの最終処理は停止されますが、それ以外の場合は無視されます。
の Java ドキュメントjava.lang.Object.finalize()
このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。