Sobes.tech
Junior

Kas yra šiukšlių surinkėjas (Garbage Collector) C#-ში?

sobes.tech AI

Atsakymas iš AI

Automatinė atminties valdymo sistema, kuri laisvuoja atmintį, užimamą objektų, į kuriuos daugiau nėra nuorodų. Tai užkerta kelią atminties nutekėjimams ir supaprastina kūrimo procesą.

Greičio surinkėjo veikimo principai:

  1. Objektų stebėjimas: Nustato objektus, kurie vis dar pasiekiami iš šakninių mazgų (statiniai laukai, vietinės kintamosios ant stogo).
  2. Atliekų surinkimas: Jei nėra nuorodų į objektą, surinkėjas pažymi jį kaip pašalinimui.
  3. Atminties laisvavimas: Laisvuoja atmintį, užimamą ištrintų objektų, ir suspaudžia likusią atmintį, kad sumažintų fragmentaciją.

Objektų kartos:

  • 0 karta: Apima neseniai sukurtus ir trumpalaikius objektus. Surinkimas dažnai vyksta.
  • 1 karta: Apima objektus, kurie išgyveno 0 kartos surinkimą. Surinkimas vyksta rečiau.
  • 2 karta: Apima ilgalaikius objektus. Surinkimas vyksta retai.

Priverstinis GC iškvietimas (naudojamas retai ir atsargiai):

// Priverstinis surinkimo iškvietimas
System.GC.Collect();
// Laukia, kol užbaigs finalizatoriai
System.GC.WaitForPendingFinalizers();

Pagrindinis atminties surinkimo mechanizmas .NET yra žymėjimo ir suspaudimo algoritmas.