úterý 25. listopadu 2008

G1 nový grbage collector pro Javu 7

Pro Javu 7 je připraven z brusu nový typ garbage collectoru (dále GC) nazývaný G1 (Garbage First), který slibuje přiblížení chování GC k soft real-time. Kromě předpovídatelnějších přerušení běhu aplikace by mělo být dalším cílem omezení častého úplného uklizení heapu (po tuto dobu aplikace nemůže reagovat) a třetím je snížení vlivu GC na výkon aplikace. G1 se od stávajících GC odlišuje organizací a způsobem správy paměti.

Zatímco klasické Hot Spot GC jsou typu Concurrent Mark-Sweep se striktně rozděleným heapem na oblast generací - young, tenured (vychází se z předpokladu, že mladé objekty umírají dřívěji. Pokud objekt přežije několik úklidů, posune se do oblasti zasloužilých objektů, kde nedochází k úklidu tak často). G1 toto rozdělení nemá striktní. Paměť je místo toho rozdělena na relativně malé regiony. G1 tyto regiony prochází a ty s nejvíce mrtvými objekty uklízí, přeživší objekty jsou kopírovány do dalších regionů.

Dříve než vás odkážu na místa, kde dostanete další informace ke G1, doporučuji prolétnout prezentaci Garbage Collection-Friendly Programming, která je plná užitečných tipů a uvádí na pravou míru mýty např. o užitečnosti rušení referencí na objekty a nebo o poollingu objketů.

Další informace ke G1