Junior
Co je to garbage collector v C#?
sobes.tech AI
Odpověď od AI
Automatický mechanismus správy paměti, který uvolňuje paměť zabranou objekty, na které již nejsou odkazy. To zabraňuje únikům paměti a zjednodušuje vývoj.
Principy fungování sběrače odpadků:
- Sledování objektů: Určuje objekty, které jsou stále dostupné z kořenových uzlů (statická pole, lokální proměnné na zásobníku).
- Sběr odpadu: Pokud na objekt nejsou žádné odkazy, sběrač odpadků jej označí k odstranění.
- Uvolnění paměti: Uvolní paměť zabranou odstraněnými objekty a stlačí zbylou paměť, aby snížil fragmentaci.
Generace objektů:
- Generace 0: Obsahuje nedávno vytvořené, krátkodobé objekty. Sběr se provádí často.
- Generace 1: Obsahuje objekty, které přežily sběr generace 0. Sběr se provádí méně často.
- Generace 2: Obsahuje dlouhodobé objekty. Sběr se provádí zřídka.
Vynucený volání GC (používá se zřídka a opatrně):
// Vynucené volání sběru odpadu
System.GC.Collect();
// Čekání na dokončení finalizátorů
System.GC.WaitForPendingFinalizers();
Hlavní mechanismus sběru odpadu v .NET je algoritmus označování a komprese.