„Szerkesztő:Mr Steve/Garbage Collection” változatai közötti eltérés

Tartalom törölve Tartalom hozzáadva
Mr Steve (vitalap | szerkesztései)
Mr Steve (vitalap | szerkesztései)
96. sor:
 
=== Generációs szemétgyűjtő ===
A tapasztalat azt mutatja, hogy az elsőként létrehozott objektumok válnak a leggyorsabban elérhetetlenné (''csecsemőhalál'' (infant mortality) vagy ''generációs hipotézis''). AEz generációsa 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" készít az objektumokról, így nem szükséges a hivatkozásfa teljes fáját átnézni a hivatkozásoknakátnézése.
EzA amemóra típusúfelosztásra gyűjtő felosztja a memóriát,kerül az objektumok kora alapján. Amikor az adott memóriarézsmemó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".
 
Ez a típusú gyűjtő felosztja a memóriát, az objektumok kora alapján. Amikor az adott memóriarézs 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".
 
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|JAVA]] Virtual Machine 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őciklust.