Java の Finalize メソッドは、Object クラスで提供されるメソッドであり、GC がオブジェクトによって占有されているメモリ領域を解放する準備ができる前に、最初に Finalize() メソッドを呼び出します。
finalize() メソッドは、Object クラスで提供されるメソッドです。GC がオブジェクトによって占有されているメモリ領域を解放する準備ができる前に、最初にFinalize() メソッドを呼び出します。 Object では次のように定義されています。
protected void finalize() throws Throwable { }
1 Finalize() 呼び出しのタイミング
は、次のようにデストラクタに関係します。 C (オブジェクト (クリアする前にデストラクタが呼び出されます)。Java では、GC の自動リサイクル機構により、finalize メソッドが時間内に実行されるという保証はありません (ガベージ オブジェクトのリサイクルのタイミングは不確実です)。それらは保証されますか? が実行されます (プログラムは最初から最後までガベージ コレクションをトリガーしません)。
public class Finalizer { @Override protected void finalize() throws Throwable { System.out.println("Finalizer-->finalize()"); } public static void main(String[] args) { Finalizer f = new Finalizer(); f = null; } } //无输出
public class Finalizer { @Override protected void finalize() throws Throwable { System.out.println("Finalizer-->finalize()"); } public static void main(String[] args) { Finalizer f = new Finalizer(); f = null; System.gc();//手动请求gc } } //输出 Finalizer-->finalize()
2 いつ使用するか
finalize() メソッドは通常、リリースに使用されます。非リソース (オープン ファイル リソース、データベース接続など)、または非 Java メソッド (ネイティブ メソッド) (C 言語の malloc() シリーズ関数など) を呼び出すときに割り当てられるメモリ。
3 使用を避けるべき理由
まず第一に、finalize() メソッドを呼び出すタイミングが不確実であるため、オブジェクトから に変わります。 到達不能になってから Finalize() メソッドが実行されるまでにかかる時間は任意に長くなります。占有されているリソースをタイムリーにリサイクルするために、finalize() メソッドに依存することはできません。リソースを使い果たす前に gc がトリガーされていないという状況が考えられます。そのため、通常のアプローチは、明示的に close() メソッドを提供することです。クライアントが手動で転送するため。
さらに、finalize() メソッドをオーバーライドすると、オブジェクトをリサイクルするときにさらに多くの操作が必要になり、オブジェクトのリサイクルにかかる時間が長くなります。
4 オブジェクトを再度存続させる
finalize() メソッドが最大 1 回しか呼び出されないという機能を利用して、オブジェクトのライフサイクルを延長できます。 。
class User{ public static User user = null; @Override protected void finalize() throws Throwable { System.out.println("User-->finalize()"); user = this; } } public class FinalizerTest { public static void main(String[] args) throws InterruptedException { User user = new User(); user = null; System.gc(); Thread.sleep(1000); user = User.user; System.out.println(user != null);//true user = null; System.gc(); Thread.sleep(1000); System.out.println(user != null);//false } }
推奨チュートリアル: "java チュートリアル"
以上がJavaのfinalizeメソッドの機能は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Dreamweaver Mac版
ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
