Junior
Čo je zberač odpadu (Garbage Collector) v C#?
sobes.tech AI
Odpoveď od AI
Automatický mechanizmus správy pamäte, ktorý uvoľňuje pamäť obsadenú objektmi, na ktoré už nie sú odkazy. Týmto sa zabraňuje únikom pamäte a zjednodušuje sa vývoj.
Princípy fungovania zberača odpadu:
- Sledovanie objektov: Určuje objekty, ktoré sú ešte dostupné z koreňových uzlov (statické polia, lokálne premenné na zásobníku).
- Zber odpadu: Ak na objekt nie sú žiadne odkazy, zberač odpadu ho označí na odstránenie.
- Uvoľnenie pamäte: Uvoľní pamäť obsadenú odstránenými objektmi a stlačí zostávajúcu pamäť na zníženie fragmentácie.
Generácie objektov:
- Generácia 0: Obsahuje nedávno vytvorené, krátkodobé objekty. Zber sa vykonáva často.
- Generácia 1: Obsahuje objekty, ktoré prežili zber generácie 0. Zber sa vykonáva zriedkavejšie.
- Generácia 2: Obsahuje dlhodobo žijúce objekty. Zber sa vykonáva zriedkavo.
Vynútené volanie GC (používa sa zriedka a opatrne):
// Vynútené volanie zberu odpadu
System.GC.Collect();
// Čakanie na dokončenie finalizátorov
System.GC.WaitForPendingFinalizers();
Hlavný mechanizmus zberu odpadu v .NET je algoritmus označovania a kompresie.