Čo je zbierka odpadu v Jave?
Garbage Collection v Jave je proces, pomocou ktorého programy vykonávajú správu pamäte automaticky. Zberateľ odpadu (GC) vyhľadá nepoužité objekty a odstráni ich, aby získal späť pamäť. V Jave sa dynamické alokovanie pamäte objektov dosahuje pomocou nového operátora, ktorý využíva časť pamäte a pamäť zostáva alokovaná, kým neexistujú referencie na použitie objektu.
Ak neexistujú žiadne odkazy na objekt, predpokladá sa, že už nie sú potrebné, a je možné získať späť pamäť obsadenú objektom. Nie je výslovne potrebné ničiť objekt, pretože Java spracováva zrušenie pridelenia automaticky.
Technika, ktorá to umožňuje, je známa ako Garbage Collection . Programy, ktoré nedealokujú pamäť, môžu nakoniec zlyhať, keď v systéme nezostane žiadna pamäť, ktorú by bolo možné alokovať. Hovorí sa o nich, že tieto programy majú únik pamäte.
Zber odpadu v prostredí Java sa deje automaticky počas životnosti programu, čím sa eliminuje potreba de-alokovať pamäť a predchádza sa tak úniku pamäte.
V jazyku C je zodpovednosťou programátora dynamicky alokovať pamäť pridelenú pomocou funkcie free (). Toto je miesto, kam vedie správa pamäte Java.Poznámka: Všetky objekty sú vytvorené v sekcii haldy pamäte. Viac informácií v neskoršom návode.
Príklad: Naučiť sa mechanizmus zberu odpadu v Jave
Krok 1) Skopírujte nasledujúci kód do editora.
trieda študent {int a;int b;public void setData (int c, int d) {a = c;b = d;}public void showData () {System.out.println ("Hodnota a =" + a);System.out.println ("Hodnota b =" + b);}public static void main (String args []) {Študent s1 = nový Študent ();Študent s2 = nový Študent ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// Študent s3;// s3 = s2;//s3.showData ();// s2 = null;//s3.showData ();// s3 = null;//s3.showData ();}}
Krok 2) Uložte, kompilujte a spustite kód. Ako je znázornené na diagrame, sú vytvorené dva objekty a dve referenčné premenné.
Krok 3) Odkomentujte riadok # 20,21,22. Uložte, skompilujte a spustite kód.
Krok 4) Ako je znázornené na obrázku nižšie, dve referenčné premenné smerujú k rovnakému objektu.
Krok 5) Odkomentujte riadok č. 23 a 24. Zostavte, uložte a spustite kód
Krok 6) Ako je znázornené na obrázku nižšie, s2 sa stane neplatným, ale s3 stále smeruje k objektu a nie je vhodný na zber java odpadu.
Krok 7) Odkomentujte riadok č. 25 a 26. Uložte, kompilujte a spustite kód
Krok 8) V tomto okamihu neexistujú žiadne odkazy smerujúce na objekt a stáva sa spôsobilým na zhromažďovanie odpadkov. Bude odstránený z pamäte a neexistuje spôsob, ako ho získať späť.
Ako vymazať objekt v Jave?
1) Ak chcete, aby bol váš objekt vhodný pre Garbage Collection, priraďte jeho referenčnú premennú k hodnote null.
2) Primitívne typy nie sú objekty. Nemôžu im byť pridelené žiadne hodnoty.