• sigbjornf's avatar
    Simple BlinkGC heap compaction. · 2c7d13f7
    sigbjornf authored
    This implements heap compaction for the Blink GC infrastructure
    (Oilpan), compacting the arenas of the BlinkGC heap which are most
    susceptible to becoming fragmented during actual use.
    
    Fragmentation is a real problem and a growing one while browsing anything
    but static pages: the amount of unused, but allocated, memory is
    fluctuating higher over time.
    
    To avoid leaving increasing amounts of unused holes in our heaps,
    heap compaction will periodically squeeze out the unused portions,
    packing together the live objects. The heap pages that are then
    left as unused, are subsequently released and returned to the OS.
    
    Due to a fortunate property of Blink heap collection types, providing
    such compaction is within relatively easy reach. Experiments show that
    the arenas which hold such collection objects ("backing stores") are
    the ones that develop fragmentation the most & persistently. While not
    a complete heap compactor of all Blink GC arenas, it addresses the
    fragmentation problem where it is most pressing. More can be done, later.
    
    Explainer / design document:
    
     https://docs.google.com/document/d/1k-vivOinomDXnScw8Ew5zpsYCXiYqj76OCOYZSvHkaU
    
    R=haraken
    BUG=672030
    
    Review-Url: https://codereview.chromium.org/2531973002
    Cr-Commit-Position: refs/heads/master@{#438125}
    2c7d13f7
Vector.h 53.2 KB