Richard Jones's Garbage Collection page - last updated 12 July 2011
the Garbage Collection page is a comprehensive resource for
automatic dynamic memory management a.k.a garbage collection.
As well as links to my book on garbage collection
and my online, searchable memory management bibliography
(over 1,900 entries),
it includes links to other garbage collection resources such as
software and conference proceedings.
I would also welcome any other suggestions for material or links to
include on this page.
is a novel framework and tool for heap visualisation.
The visualiser has been refactored to allow plugin views.
- Memory management benchmarks
- Links to repositories of Java, C# and C++ benchmarks
designed/used for evaluating memory managers.
There is an abundant but disparate literature on the subject
of garbage collection, most of which is confined to research papers.
I have tried to pool this experience into an accessible and unified framework,
starting with my first book,
algorithms for automatic dynamic memory management
My new book,
The Garbage Collection Handbook:
the art of automatic memory management
addresses new challenges to garbage collection made by recent advances in hardware and software. It explores the consequences of these changes for designers and implementers of high performance garbage collectors.
The Garbage Collection Handbook, 2011
Along with simple and traditional algorithms, the book covers state-of-the-art parallel, incremental, concurrent, and real-time garbage collection. Algorithms and concepts are often described with pseudocode and illustrations.
"The Garbage Collection Handbook is the most up to date, detailed, and exhaustive collation and description of the current state of the art of the Garbage Collection and Automatic Memory Management available today. Each of our GC engineers has a copy on their desk."
Gil Tene, Chief Technical Officer and co-founder of Azul Systems, 2011.
" Anyone developing software built upon a garbage collector would do well to
brush up on the theory that underlies this core subject and there is no
better way than to read this excellent book!"
Dr Jon Harrop, Flying Frog Consultancy Ltd, 2011
Garbage Collection, 1996
algorithms for automatic dynamic memory management
sets out to pool this experience in a single accessible and unified framework.
"The sort of comprehensive engineering manual that is so rare in
Gregory V. Wilson, Dr. Dobb's Journal, September, 1997.
"I like the book because of its high standards of scholarship.
I put it alongside Knuth's series."
Mario Wolzko, Distinguished
Engineer, Sun Microsystems Laboratories.
The 1999 printing has an improved index.
It also incorporates the corrections from the
Confusingly, this printing has the same ISBN as the 1996 one
(the modifications were insufficient to warrant a new edition)
and online booksellers typically cite it as 1996.
The bibliography currently
contains over 1875 references to papers on
including some papers on
It is available in
- explicit heap management
- cache performance
- program analysis
I would be very grateful for additions, corrections and more URL's
for the bibliography. Broken links are a menace: if you move things,
please let me know.
The tools that I use to maintain
the bibliography are freely available. If you use them please let me
know; an acknowledgement would also be nice.
David Chase maintains a
for Garbage Collection.
answers to common questions,
folk myths and truths
as well as material on
garbage collection for C and C++,
and more advanced material.
looks after a garbage collection mailing list.
The mailing list has
a home page (mostly empty) containing
and an archive with
messages grouped by month in the usual Unix format mailboxes.
To send mail to the list,
Open source garbage collectors
Benchmarks for GC, etc
The MMTk Memory Manager Toolkit
- MMTk is a toolkit for constructing garbage collectors,
written in Java. It is used in the Jikes RVM Java virtual machine and other systems.
Apple's Autozone collector
- Apple's GC is a mostly-exact conservative, generational,
mostly-concurrent open source collector. This page describes an older
version (pre Snow Leopard).
The UK Memory Management Network
(coordinated by Richard Jones)
maintains a list of
benchmarks for Java, C# and C++ programs
(see the Resources page).
These benchmarks are intended, or have been used, for evaluating memory
Garbage collectors for C and C++ are available from
Below debugging tools for dynamic memory management (amongst other things),
The Boehm-Weiser Conservative Collector
- A mark-sweep collector that can be used with C and C++.
There's also a mailing list for questions specific to this collector:
The following are older implementations, which may or may not still be
- Yonezawa Laboratory's parallel collector
- A parallel extension to the Boehm-Weiser collector.
- GGspy is a novel framework and tool for heap visualisation.
Memory Scape from Totalview
- leak detection, memory event tracking etc on a wide variety of
Parallel Inspector XE, part of Intel's Parallel Studio.
- Performs heap analysis and other stuff (detects loads of uninitialized data, for instance).
- Widely used run-time and memory error detection tool for Unix and
Insure++ from ParaSoft
- Compile-time and memory error detection tool for C and C++ running on a
variety of platforms.
- ElectricFence uses virtual memory hardware to detect when
software overruns malloc() buffer boundaries, and/or to detect any
accesses of memory released by free().
- Profiler and memory debugger for Java (versions for Solaris and
- Valgrind is an open-source memory debugger for x86-GNU/Linux.
When a program is run under Valgrind's supervision, all reads and
writes of memory are checked, and calls to malloc/new/free/delete are intercepted.
- The SAP Memory Analyzer is a fast and feature-rich heap analyser that helps find big chunks of memory and identify who is keeping these objects alive. It was developed to analyse productive heap dumps with hundreds of millions of objects. Once the heap dump is parsed, you can re-open it, get the retained size of single objects and approximate the retained size of a set of objects.
- TuningFork is a system for the visualisation, analysis, and control of real-time systems. It provides both on-line and off-line visualisation of real-time events, with capabilities to play, rewind, zoom and pause the execution. [report]
Java Virtual Machine for embedded real-time systems.
I will also try to maintain a list of links to other GC-related places.
- Conference and Workshop Proceedings
ISMM International Symposium on Memory Management series.
Its predecessor International Workshops on Memory Management
were held in
St. Malo, 1992
PLDI Conference on Programming Language Design and
OOPSLA Conference on Object Oriented Programming Systems Languages
and Applications series.
GC workshops have been held in
- VEE Conference on Virtual
Execution Environments series.
Its predecessor conferences were:
- MSP Memory Systems Performance series of workshops:
- SPACE Semantics, Program Analysis and Computing Environments
for Memory Management series of workshops (2001, 2004 and 2006).
- Managed Runtime Environments series of workshops:
- UK Memory Management Network workshops.
Workshop on Memory Management in Logic Programming Implementations
- MetaTF program traces. MetaTF is proposed
as a standard for publishing and exchanging representative allocation
workloads. The repository contains a definition of MetaTF, tools,
traces and trace specifications.
- The Ravenbrook
Memory Management Reference page includes a comprehensive
glossary, a FAQ, articles, links and a bibliography as well as
news of memory management related events.
(Ravenbrook acquired the Reference from Global Graphics, who
took over Harlequin, in 2001.)
- Tutorials and talks
Garbage : the band
A garbage-collecting wrist watch