Skip to main content
Article thumbnail
Location of Repository

Beltway: Getting Around Garbage Collection Gridlock

By Steve Blackburn, Richard E. Jones, Kathryn S. McKinley and J.Eliot B. Moss


We present the design and implementation of a new garbage collection framework that significantly generalizes existing copying collectors. The Beltway framework exploits and separates object age and incrementality. It groups objects in one or more increments on queues called belts, collects belts independently, and collects increments on a belt in first-in-first-out order. We show that Beltway configurations, selected by command line options, act and perform the same as semi-space, generational, and older-first collectors, and encompass all previous copying collectors of which we are aware. The increasing reliance on garbage collected languages such as Java requires that the collector perform well. We show that the generality of Beltway enables us to design and implement new collectors that are robust to variations in heap size and improve total execution time over the best generational copying collectors of which we are aware by up to 40%, and on average by 5 to 10%, for small to moderate heap sizes. New garbage collection algorithms are rare, and yet we define not just one, but a new family of collectors that subsumes previous work. This generality enables us to explore a larger design space and build better collectors

Topics: QA76
Publisher: Association for Computing Machinery
Year: 2002
OAI identifier:

Suggested articles


  1. (1989). A card-marking scheme for controlling intergenerational references in generation-based garbage collection on stock hardware. doi
  2. (1992). A comparative performance evaluation of write barrier implementations. doi
  3. (1993). A high-performance garbage collector for Standard ML.
  4. (1970). A non-recursive list compacting algorithm.
  5. (2001). A parallel, real-time garbage collector. doi
  6. (1989). A simple bucket-brigade advancement mechanism for generation-based garbage collection. doi
  7. (1999). A study of Large Object Spaces. doi
  8. (1998). A study of the allocation behaviour of the SPECjvm98 Java benchmarks. doi
  9. (1994). A third-generation Self implementation: Reconciling responsiveness with performance. doi
  10. (1999). Age-based garbage collection. doi
  11. (1992). An adaptive tenuring policy for generation scavengers. doi
  12. (1992). and Darko Stefanovi´ c. A comparative performance evaluation of write barrier implementations. doi
  13. (1989). Comparative Performance Evaluation of Garbage Collection Algorithms.
  14. (1977). Computer Systems with a Very Large Address Space and Garbage Collection.
  15. (2001). Contaminated garbage collection. doi
  16. (2001). Controlling garbage collection and heap growth to reduce the execution time of Java applications. doi
  17. (1992). Garbage collection and memory hierarchy. doi
  18. (1984). Garbage collection in a large LISP system. doi
  19. (1993). Garbage collection using a dynamic threatening boundary. doi
  20. (1996). Garbage Collection: Algorithms for Automatic Dynamic Memory Management. doi
  21. (1984). Generation scavenging: A non-disruptive high performance storage reclamation algorithm. doi
  22. (1997). Generational garbage collection and the Radioactive Decay model. doi
  23. (1998). Generational stack collection and profile-driven pretenuring. doi
  24. (1999). Implementing Jalape˜ no in Java. doi
  25. (1999). Implementing Jalapen˜o in Java. doi
  26. (1988). Improving locality of reference in a garbage-collecting memory management-system. doi
  27. (2002). In or out? Putting write barriers in their place. doi
  28. (1992). Incremental garbage collection for mature objects. doi
  29. (1998). Memory management with explicit regions. doi
  30. (1991). Mostly parallel garbage collection. doi
  31. (2000). Older-first garbage collection in practice. doi
  32. (2001). Performance Evaluation Corporation.
  33. (1999). Performance Evaluation Corporation. SPECjvm98 Documentation, release 1.03 edition,
  34. (2001). Pretenuring for Java. doi
  35. (1999). Properties of Age-Based Automatic Memory Reclamation Algorithms.
  36. (1988). Real-time concurrent collection on stock multiprocessors. doi
  37. (1997). Region-based memory management. doi
  38. (1989). Simple generational garbage collection and fast allocation. doi
  39. (1998). The GC interface in the EVM.
  40. (2000). The Jalape˜ no virtual machine. doi
  41. (2000). The Jalapen˜o virtual machine. doi
  42. (2001). Thread-specific heaps for multi-threaded programs. In doi
  43. (1991). Using key object opportunism to collect old objects. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.