Destruktoren in Java können mit der Finalize-Methode in Java erlernt werden. Das Konzept ist das gleiche wie bei der Finalisierungsmethode. Java funktioniert mit Hilfe der Garbage Collection für alle außer dem Destruktor. Wenn daher ein Aufruf des Destruktors erforderlich ist, kann dies mithilfe der Methode finalize erfolgen. Diese Methode ist nicht unabhängig, da sie auf der Garbage Collection basiert. Der Garbage Collector ist ein Thread, der nicht verwendete Objekte im Heap-Bereich löscht oder zerstört. Wenn das Objekt beispielsweise mit einer Datei oder einer Datenbankanwendung oder Netzwerkverbindungen verbunden ist, müssen vor dem Löschen oder Zerstören des Objekts alle mit diesen Ressourcen verbundenen Verbindungen geschlossen werden, bevor die Speicherbereinigung stattfindet. Dieses Schließen der Funktionen erfolgt durch Aufruf der finalize-Methode.
“ Destructor ist eine Methode, die aufgerufen wird, wenn die Zerstörung eines Objekts stattfindet. „ Das Hauptziel des Destruktors besteht darin, den zugewiesenen Speicher freizugeben und auch Ressourcen zu bereinigen, z. B. das Schließen geöffneter Dateien, das Schließen von Datenbankverbindungen, das Schließen von Netzwerkressourcen usw.,
WERBUNG Beliebter Kurs in dieser Kategorie JAVA MASTERY - Spezialisierung | 78 Kursreihe | 15 ProbetestsSyntax
class Object { protected void finalize() { //statements like the closure of database connection } }
Der Destruktor verfügt in Java über eine finalize()-Methode, die dem Destruktor in C++ ähnelt. Wenn die Objekte erstellt werden, werden sie im Heap-Speicher gespeichert. Auf diese kann über Haupt- oder Unterthreads zugegriffen werden. Wenn diese Objekte also nicht mehr vom Hauptthread oder seinen untergeordneten Threads verwendet werden, kommen sie für die Garbage Collection in Frage und der erworbene Speicher wird nun durch die Erstellung neuer Objekte verfügbar. Bevor ein Objekt ein vom Garbage Collector gesammelter Müll ist, ruft die JRE (Java Runtime Environment) die finalize()-Methode auf, um die Eingabe-Ausgabe-Streams, die Datenbankverbindungen, Netzwerkverbindungen usw. zu schließen. Beachten Sie, dass die aufgerufene finalize-Methode geschützt ist . Warum ist finalize geschützt, weil es entweder von der Basisklasse oder einer abgeleiteten Klasse aufgerufen werden kann? Die finalize-Methode ist in der Object-Klasse vorhanden. Wenn Sie also diese Finalisierungsmethode von anderen Objekten aus aufrufen möchten, können Sie dies „geschützt“ in „öffentlich“ ändern.
Syntax:
protected void finalize throws Throwable() { //Keep some resource closing operations here }
Methoden von finalize()
Im folgenden Programm wird anstelle der im Programm vorhandenen Finalize-Methode die entsprechende Finalize-Methode der String-Klasse aufgerufen. Die finalize-Methode wird hier außer Kraft gesetzt.
Code:
public class Demo { public static void main(String[] args) { Integer i = new Integer(2); i = null; System.gc(); System.out.println("In the Main Method"); } protected void finalize() { System.out.println("object is garbage collected "); } }
Ausgabe:
Im folgenden Programm wird die finalize-Methode intern aufgerufen; kein expliziter Aufruf erforderlich.
Code
public class Demo { public static void main(String[] args) { Demo dm = new Demo(); dm = null; System.gc(); System.out.println("In the Main Method"); } protected void finalize() { System.out.println("object is garbage collected "); } }
Ausgabe:
Im folgenden Programm wurde die Finalisierung intern abhängig von der Anzahl der erstellten Objekte aufgerufen.
Code
public class NewProgram{ public void finalize(){ System.out.println("object is garbage collected"); } public static void main(String args[]){ NewProgram np1=new NewProgram(); //first instantiation of Class NewProgram NewProgram np2=new NewProgram(); //second instantiation of Class NewProgram np1=null; np2=null; System.gc(); System.out.println("In the Main Method"); } }
Ausgabe:
Im folgenden Programm werden zwei Objekte erstellt. Finalize wird einmal aufgerufen, da beide Objekte auf dasselbe zeigen.
Code:
public class NewProgram{ public void finalize(){ System.out.println("garbage collected"); } public static void main(String args[]){ NewProgram np1=new NewProgram(); //first instantiation of Class NewProgram NewProgram np2=new NewProgram(); //second instantiation of Class NewProgram np1 = np2; // both now pointing to same object System.gc(); System.out.println("in the Main Method"); } }
OAusgabe:
Im folgenden Programm wird die finalize-Methode zweimal explizit und intern beide aufgerufen.
Code
public class Demo { public static void main(String[] args) { Demo dm = new Demo(); dm.finalize(); dm = null; System.gc(); System.out.println("In the Main Method"); } protected void finalize() { System.out.println("garbage collected "); } }
Ausgabe:
Im folgenden Programm wird eine arithmetische Ausnahme in der Finalize-Methode aufgerufen, wie sie explizit aufgerufen wird, was die Ausnahme weiter verursacht und die Ausführung des verbleibenden Programms stoppt.
Code:
public class Demo { public static void main(String[] args) { Demo dm = new Demo(); dm.finalize(); dm = null; System.gc(); System.out.println("In the Main Method"); } protected void finalize() { System.out.println("garbage collected "); System.out.println(10 / 0); } }
Ausgabe:
Im folgenden Programm wird keine Ausnahme aufgerufen, da sie nicht explizit aufgerufen wird und die Ausführung des verbleibenden Programms fortsetzt.
Code:
public class Demo { public static void main(String[] args) { Demo dm = new Demo(); dm = null; System.gc(); System.out.println("In the Main Method"); } protected void finalize() { System.out.println("garbage collected "); System.out.println(10 / 0); } }
Output:
I hope this article was interesting and informative both for you to learn the topic. This article given has covered almost all the topics you are looking for, and I hope fulfills all of your requirements.
Das obige ist der detaillierte Inhalt vonDestruktor in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!