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:
- Objektų stebėjimas: Nustato objektus, kurie vis dar pasiekiami iš šakninių mazgų (statiniai laukai, vietinės kintamosios ant stogo).
- Atliekų surinkimas: Jei nėra nuorodų į objektą, surinkėjas pažymi jį kaip pašalinimui.
- 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.