Richard Jones and Andy King

Abstract

Long-running, heavily multi-threaded, Java server applications
make stringent demands of garbage collector (GC) performance.
Synchronisation of all application threads before garbage collection
is a significant bottleneck for JVMs that use native threads.

We present a new static analysis and a novel GC framework
designed to address this issue by allowing independent collection of
thread-local heaps.
In contrast to previous work,
our solution safely classifies objects even in the presence of dynamic class loading,
requires neither write-barriers that may do unbounded work,
nor synchronisation, nor locks during thread-local collections;
our analysis is sufficiently fast to permit its integration into a
high-performance, production-quality virtual machine.