Co to jest Garbage Collection w Javie?

Spisie treści:

Anonim

Co to jest Garbage Collection w Javie?

Garbage Collection w Javie to proces, w którym programy automatycznie zarządzają pamięcią. Garbage Collector (GC) znajduje nieużywane obiekty i usuwa je w celu odzyskania pamięci. W Javie dynamiczna alokacja pamięci obiektów jest osiągana za pomocą nowego operatora, który wykorzystuje trochę pamięci, a pamięć pozostaje przydzielona do momentu, gdy pojawią się odwołania do użycia obiektu.

Gdy nie ma odniesień do obiektu, zakłada się, że nie jest on już potrzebny, a pamięć zajmowaną przez obiekt można odzyskać. Nie ma wyraźnej potrzeby niszczenia obiektu, ponieważ Java automatycznie obsługuje cofanie alokacji.

Technika, która to umożliwia, jest znana jako Garbage Collection . Programy, które nie zwalniają pamięci, mogą w końcu ulec awarii, gdy w systemie zabraknie pamięci do alokacji. Mówi się, że w tych programach występują wycieki pamięci.

Zbieranie elementów bezużytecznych w Javie odbywa się automatycznie w trakcie działania programu, co eliminuje potrzebę cofania alokacji pamięci, a tym samym zapobiega wyciekom pamięci.

W języku C obowiązkiem programisty jest cofnięcie alokacji pamięci przydzielonej dynamicznie za pomocą funkcji free (). Tutaj prowadzi zarządzanie pamięcią Java.

Uwaga: wszystkie obiekty są tworzone w sekcji sterty pamięci. Więcej na ten temat w późniejszym samouczku.

Przykład: aby nauczyć się mechanizmu garbage collector w Javie

Krok 1) Skopiuj poniższy kod do edytora.

class Student {int a;int b;public void setData (int c, int d) {a = c;b = d;}public void showData () {System.out.println ("Wartość a =" + a);System.out.println ("Wartość b =" + b);}public static void main (String args []) {Student s1 = nowy Student ();Student s2 = nowy 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) Zapisz, skompiluj i uruchom kod. Jak pokazano na diagramie, tworzone są dwa obiekty i dwie zmienne referencyjne.

Krok 3) Odkomentuj wiersz nr 20,21,22. Zapisz, skompiluj i uruchom kod.
Krok 4) Jak pokazano na poniższym diagramie, dwie zmienne odniesienia wskazują na ten sam obiekt.

Krok 5) Usuń komentarz z linii nr 23 i 24. Skompiluj, zapisz i uruchom kod.
Krok 6) Jak pokazano na poniższym diagramie, s2 staje się zerowe, ale s3 nadal wskazuje obiekt i nie kwalifikuje się do wyrzucania elementów bezużytecznych java.

Krok 7) Usuń komentarz z linii nr 25 i 26. Zapisz, skompiluj i uruchom kod.
Krok 8) W tym momencie nie ma żadnych odniesień wskazujących na obiekt i kwalifikuje się do czyszczenia pamięci. Zostanie usunięty z pamięci i nie będzie możliwości odzyskania go z powrotem.

Jak usunąć obiekt w Javie?

1) Jeśli chcesz, aby obiekt kwalifikował się do wyrzucania elementów bezużytecznych, przypisz jego zmienną referencyjną do wartości null.
2) Typy pierwotne nie są obiektami. Nie można im przypisać wartości null.