Úvod do Destructor v Jave

Destruktory v Jave sa môžu učiť pomocou metódy finalizácie v Jave. Koncepcia je rovnaká ako metóda finalizácie. Java pracuje pre všetkých okrem ničiteľa pomocou zbierky garbage. Preto v prípade, že je potrebné zavolať deštruktor, môže sa to uskutočniť pomocou metódy finalizácie. Táto metóda nie je nezávislá, pretože sa spolieha na zbierku odpadu. Zberač odpadu je vlákno, ktoré odstráni alebo zničí nepoužitý objekt v oblasti haldy. Povedzme, že ak je objekt pripojený k súboru alebo povedzte nejakú databázovú aplikáciu alebo sieťové pripojenia, pred odstránením alebo zničením objektu musí pred uskutočnením zberu odpadu zavrieť všetky pripojenia súvisiace s týmito prostriedkami. Toto zatvorenie funkcií sa uskutoční volaním metódy finalize.

Definícia Destructor v Jave

„Destruktor je metóda nazývaná, keď dôjde k zničeniu objektu. „Hlavným cieľom deštruktora je uvoľniť pridelenú pamäť a tiež vyčistiť prostriedky, ako je zatvorenie otvorených súborov, zatvorenie databázových pripojení, zatvorenie sieťových prostriedkov atď.,

syntax

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

Ako Destructor funguje v Jave?

Deštruktor má metódu finalize () v jave, ktorá je podobná deštruktoru v C ++. Keď sú objekty vytvorené, sú uložené v pamäti haldy. Sú prístupné prostredníctvom hlavných alebo podradených vlákien. Ak tieto objekty už viac nepoužívajú hlavné vlákna alebo ich podriadené vlákna, stanú sa vhodnými na zbieranie odpadu a získaná pamäť sa stáva dostupnou pri vytváraní nových objektov. Predtým, ako je objekt odpadom zhromaždeným zberačom odpadkov, volanie JRE (Java Runtime Environment) volá metódu finalize () na uzavretie vstupno-výstupných tokov, databázových pripojení, sieťových pripojení atď. Upozorňujeme, že volaná metóda finalizácie je chránená. Prečo je finalizácia chránená, pretože ju možno zavolať podľa základnej triedy alebo odvodenej triedy? metóda finalize je prítomná v triede Object. Ak teda chcete túto metódu dokončenia zavolať z iných objektov, môžete ju zmeniť na verejnú.

syntaxe:

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

Spôsoby dokončenia ()

  1. metóda finalize () je chránená podľa definície v triede java.lang.Object.
  2. Metóda finalize () sa volá iba raz.
  3. Ak chcete prepísať metódu finalize (), musíte zavolať metódu finalize explicitne.
  4. GC () je služba JVM na vykonávanie zbierok odpadkov, nazýva sa, keď je halda plná, a potrebuje pamäť pre nové prichádzajúce objekty.
  5. JVM ignoruje všetky výnimky okrem nezaškrtnutých výnimiek, ktoré sa vyskytnú pri metóde finalizácie.

Príklad č. 1

V nižšie uvedenom programe sa namiesto metódy finalizácie, ktorá je prítomná v programe, nazýva zodpovedajúca metóda finalizácií triedy String. Tu je prepísaná metóda finalizácie.

kód:

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ýkon:

Príklad č. 2

V nižšie uvedenom programe sa metóda finalizácie nazýva interne, nevyžaduje sa žiadne výslovné volanie.

kód

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ýkon:

Príklad č. 3

V nižšie uvedenom programe sa finalizácia nazývala interne v závislosti od počtu vytvorených objektov.

kód

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ýkon:

Príklad č. 4

V nižšie uvedenom programe sa vytvoria dva objekty, finalizácia sa volá raz, pretože oba objekty smerujú k rovnakému objektu.

kód:

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ýkon:

Príklad č. 5

V nižšie uvedenom programe sa metóda finalizácie nazýva dvakrát explicitne aj interne.

kód

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ýkon:

Príklad č. 6

V nižšie uvedenom programe existuje aritmetická výnimka vyvolaná vo finalizačnej metóde, pretože sa explicitne nazýva, ktorá ďalej spôsobuje výnimku a zastavuje vykonávanie zostávajúceho programu.

kód:

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ýkon:

Príklad č. 7

V nižšie uvedenom programe nie je vyvolaná žiadna výnimka, pretože nie je explicitne volaná a pokračuje vo vykonávaní zostávajúceho programu.

kód:

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ýkon:

Výhody Destructor v Jave

  1. Deštruktor ničí hodnotu vytvorenú konštruktorom na miesto v pamäti haldy.
  2. Destruktor sa vždy volá na konci programu.
  3. Ničiteľ nie je nikdy preťažený, nič nemení argument.
  4. Nie je potrebné definovať nášho konštruktora, kompilátor pre nás vytvorí.

záver

Dúfam, že tento článok bol zaujímavý a poučný, aby ste sa mohli naučiť túto tému. Tento článok sa venoval takmer všetkým témam, ktoré hľadáte a dúfam, že spĺňajú všetky vaše požiadavky.

Odporúčané články

Toto bol sprievodca programom Destructor v Jave. Tu sme diskutovali o definícii Destructor v Jave, Ako funguje destructor v jave s metódami, výhodami a rôznymi príkladmi. Môžete si tiež prečítať náš ďalší navrhovaný článok a dozvedieť sa viac-

  1. Čo je rozhranie Java?
  2. Čo je rozhranie Java?
  3. Java Tools
  4. Rozloženie v Jave
  5. Konštruktor a Destructor v Jave
  6. Príklady Destruktora v Pythone
  7. JRE vs JVM | 8 najlepších rozdielov s (infografika)
  8. Destruktor v PHP s príkladmi

Kategórie: