Introductie tot Destructor in Java
Destructors in Java kunnen worden geleerd met de finalize-methode in Java. Het concept is hetzelfde als de laatste methode. Java werkt voor iedereen behalve de vernietiger met behulp van Garbage collection. Daarom is het nodig om de destructor aan te roepen, dit kan met behulp van de methode finalize. Deze methode is niet onafhankelijk omdat deze afhankelijk is van Garbage Collection. De vuilnisman is een draad die het ongebruikte object in het heapgebied verwijdert of vernietigt. Stel dat het object is verbonden met een bestand of zeg een database-applicatie of netwerkverbindingen, voordat het object wordt verwijderd of vernietigd, moet het alle verbindingen met betrekking tot deze bronnen sluiten voordat de afvalinzameling plaatsvindt. Het sluiten van de functies gebeurt door de methode finalize aan te roepen.
Definitie van Destructor in Java
“Destructor is een methode die wordt genoemd wanneer de vernietiging van een object plaatsvindt. “Het belangrijkste doel van de destructor is om het toegewezen geheugen vrij te maken en ook bronnen op te schonen, zoals het sluiten van open bestanden, het sluiten van databaseverbindingen, het afsluiten van netwerkbronnen, enz.
Syntaxis
Class Object
(
protected void finalize()
(
//statements like closure of database connection
)
)
Hoe werkt Destructor in Java?
De destructor heeft een methode finalize () in java die vergelijkbaar is met de destructor in C ++. Wanneer de objecten worden gemaakt, worden ze opgeslagen in het heap-geheugen. Deze zijn toegankelijk via hoofd- of onderliggende threads. Dus wanneer deze objecten niet meer worden gebruikt door de hoofdthread of de onderliggende threads, komen ze in aanmerking voor het verzamelen van afval en het verworven geheugen wordt nu beschikbaar door nieuwe objecten die worden gemaakt. Voordat een object een afval is dat door de afvalverzamelaar is verzameld, roept de JRE (Java Runtime Environment) de methode finalize () aan om de invoer-uitvoerstromen, de databaseverbindingen, netwerkverbindingen, enz. Te sluiten. Merk op dat de opgeroepen finalize-methode beveiligd is. Waarom is finalize beschermd omdat het door de basisklasse of afgeleide klasse kan worden aangeroepen? De methode finalize is aanwezig in de klasse Object. Dus als u deze finalize-methode van andere objecten wilt gebruiken, kunt u deze beschermd wijzigen in openbaar.
Syntaxis:
protected void finalize throws Throwable()
(
//Keep some resource closing operations here
)
Methoden van finaliseren ()
- De methode finalize () is beveiligd zoals gedefinieerd in de klasse java.lang.Object.
- methode finalize () wordt slechts één keer aangeroepen.
- om de methode finalize () te overschrijven, moet u de methode finalize expliciet aanroepen.
- GC () is een service van JVM om Garbage Collection uit te voeren, wordt aangeroepen wanneer het heapgeheugen vol is en geheugen nodig heeft voor nieuwe aankomende objecten.
- JVM negeert alle uitzonderingen behalve de niet-aangevinkte uitzonderingen die voorkomen in de methode finaliseren.
Voorbeeld 1
In het onderstaande programma wordt de String-klasse die de bijbehorende finalisemethode gebruikt, aangeroepen in plaats van de finalize-methode die in het programma aanwezig is. De laatste methode wordt hier overschreven.
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 ");
)
)
Output:
Voorbeeld 2
In het onderstaande programma wordt de laatste methode intern aangeroepen, geen expliciete aanroep vereist.
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 ");
)
)
Output:
Voorbeeld 3
In het onderstaande programma werd de afwerking intern aangeroepen, afhankelijk van het aantal gemaakte objecten.
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");
)
)
Output:
Voorbeeld 4
In het onderstaande programma worden twee objecten gemaakt. Het finaliseren wordt eenmaal aangeroepen omdat beide objecten naar hetzelfde wijzen.
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");
)
)
Output:
Voorbeeld 5
In het onderstaande programma wordt de finalize-methode tweemaal expliciet en intern aangeroepen.
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 ");
)
)
Output:
Voorbeeld 6
In het onderstaande programma is er een rekenkundige uitzondering die in de finalize-methode wordt aangeroepen, omdat deze expliciet wordt genoemd, die de uitzondering verder veroorzaakt en de uitvoering van het resterende programma stopt.
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);
)
)
Output:
Voorbeeld # 7
In het onderstaande programma wordt geen uitzondering genoemd omdat het niet expliciet wordt aangeroepen en de uitvoering van het resterende programma wordt voortgezet.
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:
Voordelen van Destructor op Java
- De destructor vernietigt de waarde die door de constructor is gecreëerd om ruimte in het heap-geheugen te creëren.
- Destructor wordt altijd opgeroepen aan het einde van het programma.
- Destructor is nooit overbelast destructor neemt geen enkel argument.
- Het is niet nodig om onze constructor te definiëren, de compiler maakt er een voor ons.
Conclusie
Ik hoop dat dit artikel interessant en informatief voor jullie was om het onderwerp te leren kennen. Dit gegeven artikel heeft betrekking op bijna alle onderwerpen die u zoekt en hoop dat aan al uw vereisten wordt voldaan.
Aanbevolen artikelen
Dit is een gids voor Destructor op Java geweest. Hier hebben we de definitie van Destructor in Java besproken, hoe werkt destructor in Java met methoden, voordelen en verschillende voorbeelden. U kunt ook ons andere voorgestelde artikel doornemen voor meer informatie-
- Wat is Java-interface?
- Wat is Java-interface?
- Java-hulpmiddelen
- Indeling in Java
- Constructor en Destructor in Java
- Voorbeelden van Destructor in Python
- JRE vs JVM | Top 8 verschillen met (infographics)
- Destructor in PHP met voorbeelden