Nedávno jsem narazil na článek Memory fragmentation, zabývající se jedním z důvodů vysoké náročnosti firefoxu na paměť – tímto důvodem je fragmentace paměti.
Vždycky se tvrdívalo, že Java je pomalá a paměťově nenažraná. Aplikace napsané v Javě ovšem fragmentací paměti netrpí právě díky použití kopírovacího garbage collectoru, který vždy používaná data „sesype“ na začátek přidělené paměti.
Navíc si k tomuto problému přidejte fakt, že části paměti firefoxu spravují pomocí reference countingu. Reference counting je obvykle pomalejší (díky zamykání a zvyšování reference, i když i s tím se dá poprat), paměťově náročnější a navíc trpí problémy s cyklickými závislostmi.
Člověka tak napadne, že možná nastál čas pro použití garbage collectoru podobnému tomu v Javě …