Úvod do Destructor v Javě

Destruktory v Javě lze naučit pomocí metody finalizace v Javě. Koncept je stejný jako metoda finalizace. Java pracuje pro všechny kromě destruktoru pomocí sbírky odpadků. Proto v případě, že je potřeba volat destruktor, lze to provést pomocí metody finalizace. Tato metoda není nezávislá, protože se spoléhá na Garbage Collection. Sběratel odpadu je vlákno, které odstraní nebo zničí nepoužitý objekt v oblasti haldy. Řekněme, že je objekt připojen k souboru nebo řekněme nějaké databázové aplikace nebo síťová připojení, před odstraněním nebo zničením objektu musí zavřít všechna připojení související s těmito prostředky, než dojde ke sběru odpadu. Toto uzavření funkcí se provádí voláním metody finalizace.

Definice Destructor v Javě

„Destruktor je metoda, která se nazývá, když dojde ke zničení objektu. „Hlavním cílem destruktoru je uvolnit přidělenou paměť a také vyčistit prostředky, jako je uzavření otevřených souborů, uzavření databázových připojení, uzavření síťových prostředků atd.,

Syntax

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

Jak Destructor funguje v Javě?

Destruktor má v java metodu finalize (), která je podobná destruktoru v C ++. Když jsou objekty vytvořeny, jsou uloženy v paměti haldy. Jsou přístupné prostřednictvím hlavních nebo podřízených vláken. Když tedy tyto objekty již nepoužívá hlavní vlákno nebo jeho podřízená vlákna, stávají se způsobilými pro sběr odpadků a získaná paměť je nyní k dispozici při vytváření nových objektů. Před objektem je odpad shromážděný sběratelem odpadu, JRE (Java Runtime Environment) volá metodu finalize () pro uzavření vstupně-výstupních toků, databázových připojení, síťových připojení atd. Všimněte si, že volaná metoda finalizace je chráněna. Proč je finalizace chráněna, protože ji lze nazvat základní třídou nebo odvozenou třídou? metoda finalize je přítomna ve třídě Object. Pokud tedy chcete zavolat tuto finalizační metodu z jiných objektů, můžete ji změnit jako veřejnou.

Syntax:

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

Metody finalizace ()

  1. metoda finalize () je chráněna podle definice ve třídě java.lang.Object.
  2. metoda finalize () se volá pouze jednou.
  3. Chcete-li potlačit metodu finalize (), musíte zavolat metodu finalize explicitně.
  4. GC () je služba JVM, která provádí Garbage Collection, je volána, když je paměť haldy plná a potřebuje paměť pro nové přicházející objekty.
  5. JVM ignoruje všechny výjimky kromě nezaškrtnutých výjimek, které se vyskytují v metodě finalizace.

Příklad č. 1

V níže uvedeném programu se místo metody finalizace přítomné v programu vyvolá metoda odpovídající třídy finalizace String. Zde je přepsána metoda finalizace.

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

Příklad č. 2

V níže uvedeném programu je metoda finalizace volána interně, není vyžadováno žádné explicitní volání.

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

Příklad č. 3

V níže uvedeném programu bylo finalizace voláno interně v závislosti na počtu vytvořených objektů.

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

Příklad č. 4

V níže uvedeném programu jsou vytvořeny dva objekty, finalizace se nazývá jednou, protože oba objekty směřují ke stejnému.

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

Příklad č. 5

V níže uvedeném programu bude metoda finalizace volána dvakrát explicitně i interně.

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

Příklad č. 6

V níže uvedeném programu je aritmetická výjimka vyvolána ve finalizační metodě, protože je explicitně nazývána, což dále způsobuje výjimku a zastavuje provádění zbývajícího 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ýstup:

Příklad č. 7

V níže uvedeném programu není vyvolána žádná výjimka, protože není vyvolána explicitně a pokračuje ve provádění zbývajícího 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ýstup:

Výhody Destructor v Javě

  1. Destruktor ničí hodnotu vytvořenou konstruktorem na místo v paměti haldy.
  2. Destruktor se vždy volá na konci programu.
  3. Destruktor není nikdy přetížený destruktor nebere žádný argument.
  4. Není třeba definovat náš konstruktor, kompilátor pro nás vytvoří.

Závěr

Doufám, že tento článek byl zajímavý a poučný, abyste se mohli toto téma naučit. Tento článek obsahuje téměř všechna témata, která hledáte, a doufám, že splňuje všechny vaše požadavky.

Doporučené články

Toto byl průvodce Destructorem v Javě. Zde jsme probrali Definici destruktoru v Javě, Jak destruktor pracuje v java s metodami, výhodami a různými příklady. Další informace naleznete také v našem dalším navrhovaném článku.

  1. Co je rozhraní Java?
  2. Co je rozhraní Java?
  3. Java Tools
  4. Rozložení v Javě
  5. Konstruktor a ničitel v Javě
  6. Příklady Destructor v Pythonu
  7. JRE vs JVM | 8 hlavních rozdílů s (infografika)
  8. Destruktor v PHP s příklady

Kategorie: