Heim > Java > javaLernprogramm > Hauptteil

Destruktor in Java

WBOY
Freigeben: 2024-08-30 15:26:43
Original
1117 Leute haben es durchsucht

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.

Definition des Destruktors in Java

“ 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 Probetests

Syntax

class Object
{
protected void finalize()
{
//statements like the closure of database connection
}
}
Nach dem Login kopieren

Wie funktioniert Destruktor in Java?

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
}
Nach dem Login kopieren

Methoden von finalize()

  1. Die finalize()-Methode ist wie in der Klasse java.lang.Object definiert geschützt.
  2. finalize()-Methode wird nur einmal aufgerufen.
  3. Um die finalize()-Methode zu überschreiben, müssen Sie die finalize-Methode explizit aufrufen.
  4. GC() ist ein Dienst der JVM zur Ausführung der Garbage Collection. Es wird aufgerufen, wenn der Heap-Speicher voll ist und Speicher für neu ankommende Objekte benötigt.
  5. JVM ignoriert alle Ausnahmen mit Ausnahme der ungeprüften Ausnahmen, die in der Finalize-Methode auftreten.

Beispiel #1

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 ");
}
}
Nach dem Login kopieren

Ausgabe:

Destruktor in Java

Beispiel #2

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 ");
}
}
Nach dem Login kopieren

Ausgabe:

Destruktor in Java

Beispiel #3

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");
}
}
Nach dem Login kopieren

Ausgabe:

Destruktor in Java

Beispiel #4

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");
}
}
Nach dem Login kopieren

OAusgabe:

Destruktor in Java

Beispiel #5

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 ");
}
}
Nach dem Login kopieren

Ausgabe:

Destruktor in Java

Beispiel #6

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);
}
}
Nach dem Login kopieren

Ausgabe:

Destruktor in Java

Beispiel #7

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);
}
}
Nach dem Login kopieren

Output:

Destruktor in Java

Advantages of Destructor in Java

  1. The destructor destroys the value created by the constructor to space in heap memory.
  2. Destructor is always called at the end of the program.
  3. Destructor is never overloaded destructor doesn’t take any argument.
  4. No need to define our constructor; the compiler creates for us one.

Conclusion

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!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!