Garbage-First Garbage Collection (and a Related Compiler Optimizaton)

  • David Detlefs | Sun Microsystems, Principal Investigator, Java Technology Research Group

Garbage-First is a server-style garbage collector, targeted for multi-processors with large memories, that meets a “soft real-time goal” with high probability, while achieving high throughput. Whole-heap operations, such as global marking, are performed concurrently with mutation, to prevent interruptions proportional to heap or live-data size. Concurrent marking both provides collection “completeness” and identifies regions ripe for reclamation via compacting evacuation. This evacuation is performed in parallel on multiprocessors, to increase throughput.

I will also describe some compiler work in support of concurrent marking. The snapshot-at-the-beginning style of concurrent marking has several advantages over the incremental update alternative, but one main disadvantage: it requires the mutator to execute a significantly more expensive write barrier. We demonstrate that a large fraction of these write barriers are unnecessary, and may be eliminated by static analysis.

(From papers at ISMM 2004 and CGO 2005)

    • Portrait of Jeff Running

      Jeff Running