Sobes.tech
Junior

Mi az a szemétgyűjtő (Garbage Collector) a C#-ban?

sobes.tech MI

Válasz az MI-től

Automatikus memóriakezelő mechanizmus, amely felszabadítja az objektumok által foglalt memóriát, amelyekre már nincs hivatkozás. Ez megakadályozza a memória szivárgásokat és egyszerűsíti a fejlesztési folyamatot.

A szemétgyűjtő működési elvei:

  1. Objektumok nyomon követése: Meghatározza azokat az objektumokat, amelyek még elérhetők a gyökércsomópontokból (statikus mezők, helyi változók a veremben).
  2. Szemétgyűjtés: Ha egy objektumnak nincs hivatkozása, a szemétgyűjtő megjelöli az eltávolításra.
  3. Memória felszabadítása: Felszabadítja a törölt objektumok által foglalt memóriát, és összenyomja a maradék memóriát a fragmentáció csökkentése érdekében.

Objektumnemzedékek:

  • 0. nemzedék: Frissen létrehozott, rövid életű objektumokat tartalmaz. Gyakran történik gyűjtés.
  • 1. nemzedék: Olyan objektumokat tartalmaz, amelyek túléltek egy 0. nemzedék gyűjtést. Kevésbé gyakran gyűjtik.
  • 2. nemzedék: Hosszú életű objektumokat tartalmaz. Ritkán gyűjtik.

Kényszerített GC hívás (ritkán és óvatosan használva):

// Kényszerített szemétgyűjtés hívása
System.GC.Collect();
// Várakozás a végzők befejezésére
System.GC.WaitForPendingFinalizers();

A fő mechanizmus a szemétgyűjtésben a jelölő- és tömörítő algoritmus.