Junior
Czym jest zbieracz śmieci (Garbage Collector)?
sobes.tech AI
Odpowiedź od AI
Automatyczny mechanizm zarządzania pamięcią, który zwalnia nieużywane obiekty na stercie.
Zasady działania:
- Wykrywanie dostępności obiektów: Śledzi obiekty, na które odwołują się żywe (dostępne) obiekty z korzeni (np. stos wątków).
- Zwalnianie nieosiągalnych obiektów: Obiekty, na które nie ma odwołań, są uważane za "śmieci" i ich pamięć może być ponownie użyta.
Typy zbieraczy śmieci (zależnie od języka/platformy):
- Mark and Sweep: Oznacza dostępne obiekty (znakowanie), następnie przechodzi przez stertę i zwalnia nieoznaczone (czyszczenie). Może powodować fragmentację pamięci.
- Copying: Dzieli stertę na dwie części. Kopiuje żywe obiekty do nowej części, następnie czyści starą. Zapobiega fragmentacji, ale wymaga więcej pamięci.
- Generacyjny: Dzieli obiekty według wieku na pokolenia. Częściej zbiera śmieci w "młodym" pokoleniu, gdzie większość obiektów nie żyje długo.
Zalety:
- Zmniejsza prawdopodobieństwo wycieków pamięci.
- Ułatwia rozwój (nie trzeba jawnie zwalniać pamięci).
Wady:
- Może powodować opóźnienia (pauzy) podczas zbierania.
- Czas zbierania jest nieprzewidywalny.