Tartalomjegyzék:
Meghatározás - Mit jelent a szemétgyűjtő?
A szemetesgyűjtő egy olyan szoftver, amely automatikus memóriakezelést hajt végre. Feladata a fel nem használt memória felszabadítása és annak biztosítása, hogy a memória még mindig felszabaduljon, amíg még használatban van. Néhány nyelv, például a Java és a .NET nyelv, automatikus hulladékgyűjtést tartalmaz, míg mások, például a C / C ++ megköveteli a programozótól a memória kézi kezelését.
A Techopedia magyarázza a szemétgyűjtőt
A szemétszedést először a Lisp alkotója, John McCarthy vezette be, hogy megkönnyítse a kézi memóriakezelést, amikor a Lisp-nyelvtel dolgozik.
A szemétgyűjtő által az automatikus memóriakezelés végrehajtására alkalmazott három fő technika:
- Referenciaszámlálás - Az egyes objektumokhoz tartozó referenciákat számláló-változó segítségével számolják. Amikor a számláló eléri a nullát, azt jelzi, hogy az objektumra már nincs szükség, és így újrahasznosítják.
- Jelölés és söpörés - Az összes elérhető régióban minden elérhető régióban rekurzív átjárást hajtanak végre, és a megközelíthető objektumokat megjelölik. A meg nem jelölt tárgyakat ezután újrahasznosítják.
- Stop és másolás - A memóriahalom két részre oszlik: egy részre, amely az objektumokat tartalmazza, és egy üres szakaszra, ahol az objektumokat átviszik (lemásolják), ha úgy találják, hogy meg vannak jelölve. Az első részben nem jelölt tárgyak újrahasznosításra kerülnek ürítésükkel.
Amikor a mutatóhoz / objektumhoz hozzárendelt memóriablokk felszabadul, a mutatót / objektumot null értékre kell visszaállítani; egyébként lóg, azaz érvénytelen memóriablokkra mutat.
A hulladékgyűjtés segít csökkenteni a lógó mutatók és a memóriaszivárgás problémáinak okozta hibákat és biztonsági kockázatokat.
A szemetesgyűjtő használatának hátrányai között szerepel az erőforrások és a teljesítmény extra költsége. A hulladékgyűjtő futtatása szintén lelassíthatja a rendszert, és ezzel csökkentheti annak teljesítményét.
