ホームページ  >  記事  >  Java  >  Javaキーワードfinalizeを使用するサンプルコード

Javaキーワードfinalizeを使用するサンプルコード

黄舟
黄舟オリジナル
2017-03-15 13:24:271751ブラウズ

Java には finalize メソッドが用意されており、ガベージ コレクターがメモリを解放するときに最初に Finalize を呼び出しますが、いくつかの誤解があります。

1)、オブジェクトはガベージ コレクションされない場合があります。

2) ガベージ コレクションは「破壊」とは異なり、finalize は デストラクター ではありません。

3) ガベージ コレクションはメモリにのみ関連します。

4)、ガベージ コレクションとファイナライズはすべて信頼性が低く、JVM がメモリを使い果たしていない限り、メモリのリサイクルに時間を浪費することはありません。

finalize を呼び出すための前提条件:

1)、System.gc() の実行時など、すべてのオブジェクトがガベージ コレクションによって自動的に呼び出されます

2)、プログラム の終了時に各オブジェクトに対して Finalize() メソッドが呼び出されます

3) 明示的に Finalize メソッドを呼び出す

非メモリ リソースのクリーンアップを完了するために Finalize メソッドを使用することは推奨されませんが、次の目的で使用することをお勧めします。 (1) ローカル オブジェクト (作成されたオブジェクト) のクリーンアップJNI 経由)。 (2)

特定の非メモリ リソース (ソケット、ファイル、ポートなど) を確実に解放するための一般的な形式として

finalize() メソッド:

protected void finalize()
{
    //finalization code here
}

簡単なコード例:

public class FinalizationDemo {
    public static void main(String[] args) {
        Cake c1 = new Cake(1);
        Cake c2 = new Cake(2);
        Cake c3 = new Cake(3);
        c2 = c3 = null;
        System.gc(); //Invoke the Java garbage collector  
    }
}
class Cake extends Object {
    private int id;
    public Cake(int id) {
        this.id = id;
        System.out.println("Cake Object " + id + "is created");
    }
    protected void finalize() throws java.lang.Throwable {
        super.finalize();
        System.out.println("Cake Object " + id + "is disposed");
    }
}

実行結果:

りー


以上がJavaキーワードfinalizeを使用するサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。