Sobes.tech
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:

  1. Sledovanie objektov: Určuje objekty, ktoré sú ešte dostupné z koreňových uzlov (statické polia, lokálne premenné na zásobníku).
  2. Zber odpadu: Ak na objekt nie sú žiadne odkazy, zberač odpadu ho označí na odstránenie.
  3. 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.