Heim  >  Artikel  >  Java  >  Beispielcode für die Verwendung des Java-Schlüsselworts finalize

Beispielcode für die Verwendung des Java-Schlüsselworts finalize

黄舟
黄舟Original
2017-03-15 13:24:271751Durchsuche

Java stellt die finalize-Methode bereit, die finalize zuerst aufruft, wenn der Garbage Collector Speicher freigibt, es gibt jedoch einige Missverständnisse.

1), Objekt darf nicht im Müll gesammelt werden.

2) Garbage Collection ist nicht gleichbedeutend mit „Zerstörung“ und finalize ist kein Destruktor.

3) Die Garbage Collection bezieht sich nur auf den Speicher.

4), Garbage Collection und Finalize sind alle unzuverlässig. Solange die JVM ihren Speicher nicht erschöpft hat, wird sie keine Zeit mit Speicherrecycling verschwenden.

Voraussetzungen für den Aufruf von finalize:

1), alle Objekte werden automatisch von der Garbage Collection aufgerufen, z. B. beim Ausführen von System.gc()

2), Programm Rufen Sie beim Verlassen

3 die finalize()-Methode für jedes Objekt auf und rufen Sie dabei explizit die finalize-Methode auf

Es wird nicht empfohlen, die finalize-Methode zu verwenden, um die Bereinigung von Nichtobjekten abzuschließen -Speicherressourcen. Es wird jedoch empfohlen, Folgendes zu verwenden: (1) Lokale Objekte bereinigen (durch JNI erstellte Objekte). (2) Als allgemeines Format zur Sicherstellung der Freigabe

bestimmter Nicht-Speicherressourcen (Sockets, Dateien, Ports usw.)

finalize()-Methode:

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

Einfacher Beispielcode:

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");
    }
}

Laufergebnisse:

Cake Object 1is created
Cake Object 2is created
Cake Object 3is created
Cake Object 3is disposed
Cake Object 2is disposed


Das obige ist der detaillierte Inhalt vonBeispielcode für die Verwendung des Java-Schlüsselworts finalize. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn