Sissejuhatus Java hävitajasse

Java hävitajaid saab õppida Java vormistamise meetodil. Mõiste on sama nagu lõpliku vormistamise meetod. Java töötab prügikoristuse abil kõigile, välja arvatud hävitajale. Seetõttu võib hävitaja kutsumise vajaduse korral teha lõpliku meetodi abil. See meetod ei ole iseseisev, kuna see põhineb prügikoristusel. Prügikoguja on niit, mis kustutab või hävitab hunniku piirkonnas kasutamata eseme. Ütle, kas objekt on ühendatud failiga, või ütle mõni andmebaasirakendus või võrguühendus, enne objekti kustutamist või hävitamist tuleb enne prügikoristuse sulgemist sulgeda kõik nende ressurssidega seotud ühendused. Funktsioonide sulgemine toimub viimistlusmeetodi abil.

Destructori määratlus Java-s

„Hävitaja on meetod, mida nimetatakse siis, kui toimub objekti hävitamine. "Hävitaja peamine eesmärk on eraldatud mälu vabastamine ja ressursside puhastamine, näiteks avatud failide sulgemine, andmebaasiühenduste sulgemine, võrguressursside sulgemine jne,

Süntaks

Class Object
(
protected void finalize()
(
//statements like closure of database connection
)
)

Kuidas hävitaja Java töötab?

Hävitajal on Java-vormingus meetod (finalize), mis sarnaneb hävitajaga C ++ -s. Objektide loomisel salvestatakse need hunnikmällu. Nendele pääseb põhi- või alakeere abil. Nii et kui neid objekte põhilõng või selle alamniidid enam ei kasuta, saavad nad prügiveo kõlblikuks ja omandatud mälu muutub uute objektide loomisel kättesaadavaks. Enne, kui objekt on prügikoguja kogutud prügi, kutsub JRE (Java Runtime Environment) meetodit finalize () kasutama sisend-väljundvoogude, andmebaasiühenduste, võrguühenduste jms sulgemiseks. Pange tähele, et kutsutud vormistamise meetod on kaitstud. Miks on lõplik vormistamine kaitstud, kuna seda võib kutsuda kas põhiklass või tuletatud klass? Objekti klassis on lõplik meetod. Seega, kui soovite seda viimistlusmeetodit kutsuda teistelt objektidelt, saate selle kaitstud muuta avalikuks.

Süntaks:

protected void finalize throws Throwable()
(
//Keep some resource closing operations here
)

Lõpetamise meetodid ()

  1. Lõpeta () meetod on kaitstud java.lang.objektiklassis määratletud viisil.
  2. meetodit finalize () nimetatakse ainult üks kord.
  3. finalize () meetodi alistamiseks peate viimistlema lõpliku meetodi selgesõnaliselt.
  4. GC () on JVM-i teenus prügikoristuse teostamiseks, seda kutsutakse siis, kui hunnikemälu on täis ja see vajab uute saabuvate objektide jaoks mälu.
  5. JVM ignoreerib kõiki erandeid, välja arvatud kontrollimata erandid, mis esinevad viimistlusmeetodi puhul.

Näide nr 1

Allpool olevas programmis nimetatakse programmis esineva lõpuleviimise meetodi asemel String-klassile vastavat vormistamise meetodit. Lõpetamisviis on siin tühistatud.

Kood:

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

Väljund:

Näide 2

Allpool olevas programmis nimetatakse viimistlusmeetodit sisemiselt, selget kõnet pole vaja.

Kood

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

Väljund:

Näide 3

Allpool olevas programmis kutsuti lõpuleviimist sisemiselt sõltuvalt loodud objektide arvust.

Kood

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

Väljund:

Näide 4

Allpool olevas programmis luuakse kaks objekti, mille lõplikuks vormistamiseks nimetatakse üks kord, kuna mõlemad objektid osutavad samale.

Kood:

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

Väljund:

Näide 5

Allpool olevas programmis kutsutakse viimistlusmeetodit kaks korda selgesõnaliselt ja sisemiselt mõlemat.

Kood

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

Väljund:

Näide 6

Allpool olevas programmis on aritmeetiline erand, mida nimetatakse viimistlusmeetodiks, kuna seda nimetatakse otsesõnu, mis põhjustab erandi ja peatab järelejäänud programmi täitmise.

Kood:

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

Väljund:

Näide # 7

Allpool olevas programmis pole ühtegi erandit, mida nimetatakse, kuna seda ei kutsuta selgesõnaliselt ja see jätkab ülejäänud programmi täitmist.

Kood:

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

Väljund:

Destructori eelised Java-s

  1. Hävitaja hävitab konstrukatori loodud väärtuse ruumi hunnikemälus.
  2. Destructor kutsutakse alati programmi lõpus.
  3. Hävitaja pole kunagi ülekoormatud. Hävitaja ei võta ühtegi argumenti.
  4. Meie konstruktorit pole vaja määratleda, koostaja loob selle meie jaoks.

Järeldus

Loodetavasti oli see artikkel teile huvitav ja informatiivne nii teema õppimiseks. Antud artikkel on katnud peaaegu kõik otsitavad teemad ja loodetavasti vastab see kõikidele teie nõudmistele.

Soovitatavad artiklid

See on Java destructori teejuht. Siin on arutatud Java hävitaja määratlust, kuidas destruktor töötab javas koos meetodite, eeliste ja erinevate näidetega. Lisateavet leiate ka meie muudest soovitatud artiklitest -

  1. Mis on Java liides?
  2. Mis on Java liides?
  3. Java tööriistad
  4. Paigutus Java-s
  5. Konstruktor ja hävitaja Java-s
  6. Destruktori näited Pythonis
  7. JRE vs JVM | 8 parimat erinevust (infograafika)
  8. Hävitaja PHP-s koos näidetega

Kategooria: