Hvad er brugen af ​​Destructor i Java?



Denne artikel dækker begrebet destruktor i Java med eksempler, der fremhæver vigtigheden af ​​destruktør i Java i enhver Java-klasse.

Mens du arbejder med klasser i Java , konstruktører bruges til at initialisere forekomsten af ​​en klasse. Hukommelsen allokeres til objektet ved hjælp af Bygger men når objektets livscyklus er afsluttet, og objektet ikke længere er i brug, skal hukommelsen omplaceres og frigives. Det er her, destruktør i kommer ind i billedet. I denne artikel lærer vi om destruktører i Java i følgende rækkefølge:

Hvad er en Destructor?

En destruktør er en speciel der kaldes op automatisk, så snart et objekts livscyklus er afsluttet. En destruktør kaldes til at de-allokere og frigøre hukommelse. Følgende opgaver udføres, når en destruktor kaldes.





  • Frigørelse af frigørelseslåse
  • Lukning af alle databaseforbindelser eller filer
  • Frigivelse af alle netværksressourcerne
  • Andre husholdningsopgaver
  • Gendannelse af den bunkeplads, der er tildelt i løbet af et objekt

Destruktører i Java, også kendt som finalisatorer, er ikke-deterministiske. Allokering og frigivelse af hukommelse håndteres implicit af skraldespand i Java .

Finaliserere i Java skal implicit påberåbes, da deres påkaldelse ikke er garanteret, i modsætning til C # finalizers, der påberåbes under .NET-kørselstiden.



Lad os se på nøgleegenskaber for en destruktør:

  • Overbelastning eller arv er ikke tilladt
  • Ingen specifikation af adgangsmodifikatorer eller parametre
  • Automatisk påkaldelse og intet eksplicit opkald fra brugeren
  • Anvendes i klasser, men ikke i strukturer
  • Klassens rækkefølge varierer fra den mest afledte klasse til den mindst afledte klasse
  • Også kaldet, når objektforekomsten ikke længere er berettiget til adgang
  • Bruges til frigivelse af ikke-administrerede ressourcer i stedet for styrede ressourcer, som objektet har

Skraldemand

En affaldssamler er et program, der kører på Java virtuel maskine at gendanne hukommelsen ved at slette de objekter, der ikke længere er i brug eller har afsluttet deres livscyklus. Et objekt siges at være kvalificeret til affaldsopsamling, hvis og kun hvis objektet ikke kan nås.

Lad os prøve at forstå, hvordan skraldindsamling fungerer i Java:



Affaldssamling er hovedsageligt processen med at markere eller identificere de uopnåelige objekter og slette dem for at frigøre hukommelsen. Implementeringen lever i JVM, det eneste krav er, at den skal opfylde JVM-specifikationerne. Dette er de forskellige typer affaldssamlere i Java:

  • Seriel affaldssamler
  • Parallel / gennemstrømningsaffaldssamler
  • CMS-samler
  • G1 Collector

Lad os se på nogle få fordele ved skraldindsamling i Java:

  • Det sletter automatisk de ubrugte objekter, der ikke kan nås for at frigøre hukommelsen
  • Affaldssamling gør Java-hukommelse effektiv
  • Det behøver ikke at blive udtrykkeligt kaldt, da implementeringen lever i JVM
  • Affaldssamling er blevet en vigtig og standardkomponent i mange programmeringssprog

Lad os prøve at forstå, hvorfor Destructors ikke bruges i Java.

Constructor vs Destructor: Forskellen mellem en Constructor og en Destructor

Bygger Destroyer

En konstruktør bruges til at initialisere en forekomst af en klasse

En destruktør bruges til at slette eller ødelægge objekterne, når de ikke længere er i brug

Konstruktører kaldes, når der oprettes en forekomst af en klasse

Destruktorer kaldes, når en genstand ødelægges eller frigives

Hukommelsestildeling

Frigør hukommelsen

Overbelastning er mulig

Overbelastning er ikke tilladt

hvordan man bruger spyder python

De har lov til at have argumenter

Ingen argumenter kan føres i en destruktør

Java Finalize () -metode

Det bliver ret vanskeligt for enhver udvikler at tvinge henrettelsen af ​​en affaldssamler, men der er et alternativ til dette. Vi kan bruge objektet. færdiggør () metode, der fungerer nøjagtigt som en destruktor i Java.

En Object.finalize () -metode nedarves i alle Java-objekter . Det er ikke en destruktor, men bruges til at sikre eller yde ekstra sikkerhed for at sikre brugen af ​​eksterne ressourcer som at lukke filen osv. Inden programmet lukkes ned. Du kan kalde det ved hjælp af selve metoden eller system.runFinalizersOnExit (true).

Brug af finalize () -metoden anbefales stærkt ikke, da den kan være meget usikker og i nogle tilfælde bruges forkert.

Lad os tage et simpelt eksempel for at vise, hvordan finalize () kan bruges til at kalde affaldssamleren.

offentlig klasse A {offentlig tomrum afsluttes () kaster Throwable {System.out.println ('Objekt ødelægges af affaldssamleren')} offentlig statisk ugyldigt hoved (String [] args) {A test = new A () test = null System.gc ()}}

Dette bringer os til slutningen af ​​denne artikel, hvor vi har lært om Destructor i Java. Jeg håber, du er klar med alt, hvad der er delt med dig i denne vejledning.

Hvis du fandt denne artikel om “Destructor In Java” relevant, skal du tjekke et betroet online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden.

Vi er her for at hjælpe dig med hvert trin på din rejse og komme med en læseplan, der er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige synes godt om Dvale & .

Hvis du støder på spørgsmål, er du velkommen til at stille alle dine spørgsmål i kommentarfeltet i “Destructor In Java”, og vores team vil med glæde svare.