Dynamic Selection of Application-Specific Garbage Collectors
Sunil Soman, Chandra Krintz, and David Bacon
International Symposium for Memory Management (ISMM)
Much prior work has shown that the performance enabled by
garbage collection (GC) systems is highly dependent upon the
behavior of the application as well as on the available resources.
That is, no single GC enables the best performance for all programs
and all heap sizes. To address this limitation, we present the
design, implementation, and empirical evaluation of a novel
Java Virtual Machine (JVM) extension that facilitates
dynamic switching between a number of very different and
popular garbage collectors. We also show how to
exploit this functionality using annotation-guided
GC selection and evaluate the system using
a large number of benchmarks. In addition, we implement and evaluate
a simple heuristic to investigate the efficacy of switching automatically.
Our results show that, on average, our annotation-guided system introduces
less than 4% overhead and improves performance
by 24% over the worst-performing GC (across heap sizes) and by 7% over
always using the popular Generational/Mark-Sweep hybrid.