Při práci s třídy v Javě , konstruktory se používají pro inicializaci instance třídy. Paměť je pro objekt přidělena pomocí stavitel ale poté, co je dokončen životní cyklus objektu a objekt se již nepoužívá, musí být paměť uvolněna a uvolněna. To je místo, kde destruktor dovnitř přichází do obrazu. V tomto článku se dozvíme o destruktorech v Javě v následujícím pořadí:
Co je destruktor?
Destruktor je speciální který se automaticky zavolá, jakmile je dokončen životní cyklus objektu. Volá se destruktor k uvolnění a uvolnění paměti. Při volání destruktoru se provedou následující úlohy.
- Uvolnění uvolňovacích zámků
- Uzavření všech databázových připojení nebo souborů
- Uvolnění všech síťových prostředků
- Další úkoly v domácnosti
- Obnova prostoru haldy přiděleného během životnosti objektu
Destruktory v Javě, známé také jako finalizátory, jsou nedeterministické. Alokaci a uvolnění paměti implicitně zpracovává garbage collector v Javě .
Finalizátory v Javě je nutné implicitně vyvolat, protože jejich vyvolání není zaručeno, na rozdíl od C # finalizátorů, které jsou vyvolány během běhu .NET.
Pojďme se podívat na klíčové vlastnosti destruktoru:
- Přetížení nebo dědičnost nejsou povoleny
- Žádná specifikace modifikátorů přístupu nebo parametrů
- Automatické vyvolání a žádné výslovné volání od uživatele
- Používá se ve třídách, ale ne ve strukturách
- Pořadí třídy se liší od nejvíce odvozené třídy po nejméně odvozenou třídu
- Také se nazývá, když instance objektu již není způsobilá pro přístup
- Používá se k uvolnění nespravovaných prostředků namísto spravovaných prostředků držených objektem
Popelář
Garbage collector je program, který běží na Virtuální stroj Java obnovit paměť odstraněním objektů, které se již nepoužívají nebo které ukončily svůj životní cyklus. O objektu se říká, že je způsobilý k uvolňování paměti, právě když je objekt nedosažitelný.
jak nastavit cestu java v systému Windows
Pokusme se pochopit, jak funguje odvoz odpadu v Javě:
Garbage collection je hlavně proces označování nebo identifikace nedosažitelných objektů a jejich mazání, aby se uvolnila paměť. Implementace žije v JVM, jediným požadavkem je, aby splňovala specifikace JVM. Jedná se o různé typy sběračů odpadků v Javě:
- Sériový sběratel odpadků
- Parallel / Throughput Garbage Collector
- Sběratel CMS
- Sběratel G1
Podívejme se na několik výhod sběru odpadu v Javě:
- Automaticky odstraní nepoužívané objekty, které nejsou dostupné, aby uvolnilo paměť
- Garbage collection dělá paměť Java efektivní
- Nemusí být výslovně volána, protože implementace žije v JVM
- Odpadky se staly důležitou a standardní součástí mnoha programovacích jazyků
Zkusme pochopit, proč se destruktory v Javě nepoužívají.
Constructor vs Destructor: Rozdíl mezi konstruktérem a destruktorem
Stavitel | ničitel |
Konstruktor se používá k inicializaci instance třídy | Destruktor se používá k odstranění nebo zničení objektů, když již nejsou používány |
Konstruktory jsou volány, když je vytvořena instance třídy | Destruktory jsou volány, když je objekt zničen nebo uvolněn |
Přidělení paměti | Uvolňuje paměť |
Přetížení je možné jednoduchý úvod do vědy o datech | Přetížení není povoleno |
Mohou mít argumenty | V destruktoru nelze předat žádné argumenty |
Metoda Java Finalize ()
Pro každého vývojáře je poměrně obtížné vynutit provedení garbage collectoru, ale existuje alternativa k tomuto. Můžeme použít objekt. dokončit() metoda, která funguje přesně jako destruktor v Javě.
Metoda Object.finalize () se dědí ve všech Objekty Java . Nejde o destruktor, ale slouží k zajištění nebo poskytnutí dalšího zabezpečení k zajištění použití externích zdrojů, jako je zavření souboru atd., Než se program vypne. Můžete jej zavolat pomocí samotné metody nebo system.runFinalizersOnExit (true).
Použití metody finalize () se velmi nedoporučuje, protože může být velmi nebezpečné a v některých případech použito nesprávně.
Uveďme si jednoduchý příklad, který ukazuje, jak lze pomocí finalize () volat garbage collector.
public class A {public void finalize () vrhá Throwable {System.out.println ('Objekt je zničen sběratelem odpadků')} public static void main (String [] args) {A test = nový A () test = null System.gc ()}}
Tím se dostáváme na konec tohoto článku, kde jsme se dozvěděli o Destruktoru v Javě. Doufám, že máte jasno se vším, co bylo s vámi v tomto tutoriálu sdíleno.
Pokud vám tento článek o „Destruktoru v Javě“ připadá relevantní, podívejte se na důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě.
Jsme tu, abychom vám pomohli s každým krokem na vaší cestě a přišli s osnovami určenými pro studenty a profesionály, kteří chtějí být vývojářem Java. Kurz je navržen tak, aby vám poskytl náskok v programování Java a naučil vás základní i pokročilé koncepty Java spolu s různými jako Přezimovat & .
Pokud narazíte na jakékoli dotazy, neváhejte se zeptat na všechny své dotazy v sekci komentářů v „Destructor In Java“ a náš tým vám rád odpoví.