Sobes.tech
Junior

Czym jest garbage collector w C#?

sobes.tech AI

Odpowiedź od AI

Automatyczny mechanizm zarządzania pamięcią, który zwalnia pamięć zajmowaną przez obiekty, na które nie ma już odwołań. Zapobiega to wyciekom pamięci i upraszcza proces programowania.

Zasady działania zbieracza śmieci:

  1. Śledzenie obiektów: Określa obiekty, które nadal są dostępne z korzeniowych węzłów (pola statyczne, lokalne zmienne na stosie).
  2. Zbieranie śmieci: Jeśli na obiekt nie ma odwołań, zbieracz śmieci oznacza go do usunięcia.
  3. Uwalnianie pamięci: Uwalnia pamięć zajmowaną przez usunięte obiekty i ścieśnia pozostałą pamięć, aby zmniejszyć fragmentację.

Pokolenia obiektów:

  • Pokolenie 0: Zawiera niedawno utworzone, krótkotrwałe obiekty. Zbiórka odbywa się często.
  • Pokolenie 1: Zawiera obiekty, które przetrwały zbiórkę pokolenia 0. Zbiórka odbywa się rzadziej.
  • Pokolenie 2: Zawiera długotrwałe obiekty. Zbiórka odbywa się rzadko.

Wymuszone wywołanie GC (rzadko używane i ostrożnie):

// Wymuszone wywołanie zbierania śmieci
System.GC.Collect();
// Oczekiwanie na zakończenie finalizatorów
System.GC.WaitForPendingFinalizers();

Główny mechanizm zbierania śmieci w .NET to algorytm oznaczania i kompresji.