
|

Richard Jones
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.
Richard Jones
the
Books
the
Bibliography
the
FAQ
the
Mailing List
the
Software
the Rest
|
|
the News

- GGspy
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,
Garbage Collection:
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
Garbage Collection:
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
computing." 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
errata.
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
- explicit heap management
- cache performance
- program analysis
It is available in
HTML,
compressed BibTeX
and
compressed PostScript
formats.
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
GC-faq
for Garbage Collection.
It contains
answers to common questions,
folk myths and truths
as well as material on
garbage collection for C and C++,
language interfaces,
basic algorithms
and more advanced material.
John Levine
looks after a garbage collection mailing list.
To subscribe,
send
sub gclistor
sub gclist-digest
to majordomo@iecc.com.
The mailing list has
a home page (mostly empty) containing
a FAQ
and an archive with
messages grouped by month in the usual Unix format mailboxes.
To send mail to the list,
mail gclist@iecc.com
Open source garbage collectors
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).
Benchmarks for GC, etc
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
managers.
Garbage collectors for C and C++ are available from
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:
subscribe by
email
to gc-request@linux.hpl.hp.com.
The following are older implementations, which may or may not still be
supported
- Yonezawa Laboratory's parallel collector
- A parallel extension to the Boehm-Weiser collector.
Debugging tools
Below debugging tools for dynamic memory management (amongst other things),
mostly commercial.
GCspy
- GGspy is a novel framework and tool for heap visualisation.
[report]
[screenshots]
Memory Scape from Totalview
- leak detection, memory event tracking etc on a wide variety of
platforms.
Parallel Inspector XE, part of Intel's Parallel Studio.
- Performs heap analysis and other stuff (detects loads of uninitialized data, for instance).
Purify from
IBM Rational
- Widely used run-time and memory error detection tool for Unix and
WindowsNT.
Insure++ from ParaSoft
- Compile-time and memory error detection tool for C and C++ running on a
variety of platforms.
ElectricFence
- ElectricFence uses virtual memory hardware to detect when
software overruns malloc() buffer boundaries, and/or to detect any
accesses of memory released by free().
JProbe
- Profiler and memory debugger for Java (versions for Solaris and
Windows 95/98/NT).
Valgrind
- 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.
Memory Analyzer
- 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
- 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]
-
Other products
NewMonics Inc's
Java Virtual Machine for embedded real-time systems.
I will also try to maintain a list of links to other GC-related places.
Surveys
Conference and Workshop Proceedings
-
ISMM International Symposium on Memory Management series.
Its predecessor International Workshops on Memory Management
were held in
St. Malo, 1992
[proceedings]
and
Kinross, 1995
[proceedings].
-
PLDI Conference on Programming Language Design and
Implementation series.
-
OOPSLA Conference on Object Oriented Programming Systems Languages
and Applications series.
GC workshops have been held in
1990
1991
1993 and
Atlanta, 1997,
- VEE Conference on Virtual
Execution Environments series.
Its predecessor conferences were:
JVM01,
JVM02,
IVME03,
VM04,
IVME04.
- MSP Memory Systems Performance series of workshops:
2002,
2004,
2005.
- SPACE Semantics, Program Analysis and Computing Environments
for Memory Management series of workshops (2001, 2004 and 2006).
- Managed Runtime Environments series of workshops:
2003,
MRE'04.
- UK Memory Management Network workshops.
- First
Workshop on Memory Management in Logic Programming Implementations
Repositories
- 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
http://www.cs.ukc.ac.uk/people/staff/rej/gc.html
|