Spisu treści:
Definicja - Co oznacza Garbage Collection (GC)?
Garbage collection (GC) to dynamiczne podejście do automatycznego zarządzania pamięcią i alokacji sterty, które przetwarza i identyfikuje martwe bloki pamięci oraz realokuje pamięć do ponownego użycia. Podstawowym celem odśmiecania pamięci jest ograniczenie wycieków pamięci.
Wdrożenie GC wymaga trzech podstawowych podejść, takich jak:
- Mark-and-sweep - W trakcie, gdy kończy się pamięć, GC lokalizuje całą dostępną pamięć, a następnie odzyskuje dostępną pamięć.
- Zliczanie referencji - Przydzielone obiekty zawierają liczbę referencyjną numeru referencyjnego. Gdy liczba pamięci wynosi zero, obiekt jest śmieci, a następnie zostaje zniszczony. Zwolniona pamięć powraca do sterty pamięci.
- Kopiuj kolekcję - Istnieją dwie partycje pamięci. Jeśli pierwsza partycja jest pełna, GC lokalizuje wszystkie dostępne struktury danych i kopiuje je na drugą partycję, kompaktując pamięć po procesie GC i umożliwiając ciągłą wolną pamięć.
Niektóre języki programowania i platformy z wbudowanym GC (np. Java, Lisp, C # i .Net) samodzielnie zarządzają przeciekami pamięci, co pozwala na bardziej wydajne programowanie.
Techopedia wyjaśnia Garbage Collection (GC)
Dynamiczne podejście odśmiecania do automatycznego przydzielania sterty usuwa typowe i kosztowne błędy, które często powodują błędy programu w świecie rzeczywistym, gdy nie zostaną wykryte.
Ponieważ trudno je zidentyfikować i naprawić, błędy alokacji są kosztowne. W związku z tym zbieranie śmieci jest uważane przez wielu za istotną funkcję językową, która ułatwia pracę programisty dzięki niższemu ręcznemu zarządzaniu alokacją sterty. Jednak GC nie jest doskonały i należy wziąć pod uwagę następujące wady:
- Podczas zwalniania pamięci GC zużywa zasoby obliczeniowe.
- Proces GC jest nieprzewidywalny, co powoduje rozproszone opóźnienia sesji.
- Gdy nieużywane odwołania do obiektów nie są usuwane ręcznie, GC powoduje logiczne wycieki pamięci.
- GC nie zawsze wie, kiedy przetwarzać w środowisku pamięci wirtualnej współczesnych komputerów stacjonarnych.
- Proces GC słabo współdziała z systemami pamięci podręcznej i pamięci wirtualnej, co powoduje trudności z dostrajaniem wydajności.
