Junior
Kas ir atkritumu savāktājs (Garbage Collector) C#?
sobes.tech AI
Atbilde no AI
Automātiska atmiņas pārvaldības sistēma, kas atbrīvo atmiņu, ko aizņem objekti, uz kuriem vairs nav atsauces. Tas novērš atmiņas noplūdes un vienkāršo izstrādes procesu.
Tīrītāja darbības principi:
- Objektu uzraudzība: Nosaka objektus, kuri joprojām ir pieejami no saknes mezgliem (statiskie lauki, lokālās mainīgās uz steka).
- Atkritumu savākšana: Ja uz objekta nav atsauces, savācējs to iezīmē dzēšanai.
- Atmiņas atbrīvošana: Atbrīvo atmiņu, ko aizņem izdzēstie objekti, un saspiest atlikošo atmiņu, lai samazinātu fragmentāciju.
Objektu paaudzes:
- 0. paaudze: Satur nesen izveidotus un īslaicīgus objektus. Savākšana notiek bieži.
- 1. paaudze: Satur objektus, kas ir izdzīvojuši 0. paaudzes savākšanu. Savākšana notiek retāk.
- 2. paaudze: Satur ilgdzīvojošus objektus. Savākšana notiek reti.
Piespiedu GC izsaukums (retāk un ar piesardzību):
// Piespiedu atkritumu savākšanas izsaukums
System.GC.Collect();
// Gaida, kamēr pabeigs finalizētāji
System.GC.WaitForPendingFinalizers();
Galvenais atkritumu savākšanas mehānisms .NET ir marķēšanas un saspiestā algoritms.