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:
- 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).
- Szemétgyűjtés: Ha egy objektumnak nincs hivatkozása, a szemétgyűjtő megjelöli az eltávolításra.
- 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.