Junior
Mi az a szemétgyűjtő (Garbage Collector)?
sobes.tech MI
Válasz az MI-től
Automatikus memóriakezelő mechanizmus, amely felszabadítja a nem használt objektumokat a halomban.
Működési elvek:
- Objektumok elérhetőségének felismerése: Követi az élő (hozzáférhető) objektumokra mutató hivatkozásokat a gyökerektől (például szálak veremétől).
- Elérhetetlen objektumok felszabadítása: A hivatkozás nélküli objektumokat "szemétnek" tekintik, és memóriájuk újrahasznosítható.
Szemétgyűjtő típusok (nyelv/platform függő):
- Mark and Sweep: Megjelöli az elérhető objektumokat (jelölés), majd végigmegy a halmon és felszabadítja a nem megjelölt objektumokat (tiszítás). Memória fragmentációt okozhat.
- Copying: Két részre osztja a halmot. Másolja az élő objektumokat az új részbe, majd tisztítja a régit. Megelőzi a fragmentációt, de több memóriát igényel.
- Generációs: Az objektumokat életkor szerint generációkra osztja. Gyakrabban gyűjti a szemét a "fiatal" generációban, ahol a legtöbb objektum rövid életű.
Előnyök:
- Csökkenti a memória szivárgásának valószínűségét.
- Egyszerűsíti a fejlesztést (nem kell explicit módon felszabadítani a memóriát).
Hátrányok:
- Késleltetéseket (szüneteket) okozhat a gyűjtés során.
- A gyűjtési idő előre nem látható.