Co je Garbage Collection v Javě?
Garbage Collection v Javě je proces, při kterém programy provádějí správu paměti automaticky. Garbage Collector (GC) najde nepoužívané objekty a odstraní je, aby znovu získal paměť. V Javě se dynamické alokace paměti objektů dosahuje pomocí nového operátoru, který používá část paměti a paměť zůstává alokována, dokud neexistují odkazy na použití objektu.
Pokud neexistují žádné odkazy na objekt, předpokládá se, že již není potřeba, a paměť obsazená objektem může být uvolněna. Neexistuje žádná výslovná potřeba zničit objekt, protože Java zpracovává zrušení přidělení automaticky.
Technika, která toho dosahuje, je známá jako Garbage Collection . Programy, které nedealokují paměť, mohou nakonec selhat, pokud v systému nezbude žádná paměť, kterou by bylo možné přidělit. O těchto programech se říká, že mají úniky paměti.
Garbage collection v Javě se děje automaticky během životnosti programu, což eliminuje potřebu de-alokovat paměť a tím se zabrání úniku paměti.
V jazyce C je odpovědností programátora dynamicky alokovat paměť přidělenou pomocí funkce free (). Tady vede správa paměti Java.Poznámka: Všechny objekty jsou vytvářeny v paměti haldy . Více o tom v pozdějším tutoriálu.
Příklad: Naučit se mechanismus sběrače odpadků v Javě
Krok 1) Zkopírujte následující kód do editoru.
třída Student {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 []) {Student s1 = nový Student ();Student s2 = nový Student ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// Student s3;// s3 = s2;//s3.showData ();// s2 = null;//s3.showData ();// s3 = null;//s3.showData ();}}
Krok 2) Uložte, zkompilujte a spusťte kód. Jak je znázorněno na obrázku, jsou vytvořeny dva objekty a dvě referenční proměnné.
Krok 3) Odkomentujte řádek # 20,21,22. Uložte, zkompilujte a spusťte kód.
Krok 4) Jak je znázorněno na obrázku níže, dvě referenční proměnné ukazují na stejný objekt.
Krok 5) Odkomentujte řádek č. 23 a 24. Zkompilujte, uložte a spusťte kód
Krok 6) Jak je znázorněno v diagramu níže, s2 se stane null, ale s3 stále ukazuje na objekt a není způsobilý pro java garbage collection.
Krok 7) Odkomentujte řádek č. 25 a 26. Uložit, zkompilovat a spustit kód
Krok 8) V tomto okamžiku neexistují žádné odkazy směřující na objekt a stává se způsobilým pro uvolňování paměti. Bude odstraněn z paměti a neexistuje způsob, jak jej získat zpět.
Jak odstranit objekt v Javě?
1) Pokud chcete, aby byl váš objekt vhodný pro Garbage Collection, přiřaďte jeho referenční proměnnou null.
2) Primitivní typy nejsou objekty. Nelze jim přiřadit null.