The Need for Predictable Garbage Collection

Alastair Reid, John McCorquodale, Jason Baker, Wilson Hsieh, and Joseph Zachary

May 1999

The Flux Research Group
Department of Computer Science
University of Utah
50 S. Central Campus Drive Rm. 3190
Salt Lake City, Utah 84112-9205


Modern programming languages such as Java are increasingly being used to write systems programs. By ``systems programs,'' we mean programs that provide critical services (compilers), are long-running (Web servers), or have time-critical aspects (databases or query engines). One of the requirements of such programs is predictable behavior. Unfortunately, predictability is often compromised by the presence of garbage collection. Various researchers have examined the feasibility of replacing garbage collection with forms of stack allocation that are more predictable than GC, but the applicability of such research to systems programs has not been studied or measured. A particularly promising approach allocates objects in the n-th stack frame (instead of just the topmost frame): we call this deep stack allocation. We present dynamic profiling results for several Java programs to show that deep stack allocation should benefit systems programs, and we describe the approach that we are developing to perform deep stack allocation in Java.

Full paper, available in compressed Postscript format , presented at ACM SIGPLAN Workshop on Compiler Support for System Software (WCSSS'99), May 1, 1999, Atlanta, GA.