„Szemétgyűjtés” változatai közötti eltérés

[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
Syp (vitalap | szerkesztései)
Syp (vitalap | szerkesztései)
96. sor:
 
=== Generációs szemétgyűjtő ===
A tapasztalat azt mutatja, hogy a frissen létrehozott objektumok válnak a leggyorsabban elérhetetlenné (''csecsemőhalál'' (infant mortality) vagy ''generációs hipotézis''). Ez a szemétgyűjtő generációkra osztja az objektumokat (az objektumok létrehozása és a hivatkozó elemek alapján) és a ciklusa alatt az egyes generációkat teszi a fehér csoportba. A futtató rendszer "feljegyzéseket"„feljegyzéseket” készít az objektumokról, így nem szükséges a hivatkozásfa teljes átnézése.
A memóramemória felosztásra kerül az objektumok kora alapján. Amikor az adott memóriarész megtelik, azok az elemek, amelyekre létezik élő hivatkozás az öregebb régiókból, egy generációval feljebb kerülnek. Ez a módszer igen gyors, mivel egyszerre csak egy generációt kell "kitakarítani"„kitakarítani”.
 
A generációs gyűjtő [[Heurisztika|heurisztikus]] alapon működik, ezért előfordulhat, hogy néhány felesleges objektum nem szabadul fel. Ez időnként szükségessé teszi a teljes memória átvizsgálását. A modern keret- vagy futtató rendszerek (mint a [[Java virtuális gép]] vagy a [[.NET Framework]]) valamilyen hibrid megoldást alkalmaznak, vagyis az alapértelmezett generációk átvizsgálásán felül végrehajtanak egy "''mark-and-sweep''" ciklust vagy a memória széttöredezettsége miatt egy másoló eljárást - amennyiben szükséges. A végrehajtott eljárások alapján megkülönböztetünk al- '''(minor)''' és fő- '''(major)''' gyüjtőciklustgyűjtőciklust.
 
=== Megszakításos-, növekvényes- és konkurrens modell ===