Parallel/Distributed Garbage Collectors Home Page

Parallel and Distributed Extension to Boehm's
Conservative Garbage Collector for C/C++

2003 2/10 Uploaded the latest beta version of SGC
1999 7/21 The second release of parallel collector for multiproceessors (SGC0.2, formerly PGC) is out!
1999 1/8 The first release of parallel collector for clusters (DGC-0.1b) is out!
1998 10/23 The first release of parallel collector for multiprocessors (PGC0.1) is out!

Garbage collection (GC)  is one of the most important and complex parts of the runtime system of programming languages.  It is further complicated in parallel and distributed environments. GC is simply a must for anybody who implements high-level programming languages and is sometimes desired even by application programmers using languages that lack it (e.g., C/C++). 

For people who want a GC for their languages or applications, the current situation is unfortunate because many collectors are so tightly integrated in a particular programming environment that they cannot simply be reused for other contexts.  This is understandable because GC tends to require a tight cooperation with other components of a system, such as code generators and communication layers. 

We are working to improve this situation in parallel and distributed settings.  The goal of this project is to provide parallel/distributed garbage collectors that is usable by C/C++ application programs and can easily cooperate with other components for parallel and distributed software (e.g., communication library of their own).  We currently offer two separate GC systems: a parallel collector on shared-memory multiprocessors and a parallel collector on message passing (distributed) environment.  In future, we will unify these two systems in a single one that works on clusters of multiprocessors.  Both are based on Boehm's Conservative GC, a garbage collection library (mainly) for uniprocessors.  We extended it to parallel and distributed environments. Thanks to the Boehm GC, our collector can be used by C programs simply as a replacement of the malloc/free, recognizes interior pointers, and avoids excess retention. 

Further Information


  • Kenjiro Taura and Akinori Yonezawa,  "An Effective Garbage Collection Strategy for Parallel Programming Languages on Large Scale Distributed-Memory Machines" In Proceedings of ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming (PPoPP), June 1997.  (gzipped PostScript (letter), gzipped PostScript (A4))
  • Toshio Endo, Kenjiro Taura and Akinori Yonezawa,  "A Scalable Mark-Sweep Garbage Collector on Large-Scale Shared-Memory Machines" In Proceedings of High Performance Networking and Computing (SC97), November 1997.  ( gzipped PostScript(letter), gzipped PostScript(A4) )
  • Toshio Endo,  "A Scalable Mark-Sweep Garbage Collector on Large-Scale Shared-Memory Machines" Master thesis, Department of Information Science, The University of Tokyo, February 1998. (gzipped PostScript(A4))
  • Hirotaka Yamamoto, Kenjiro Taura, Akinori Yonezawa.  "Comparing Reference Counting and Global Mark-and-Sweep on Parallel Computers" In Lecture Notes for Computer Science (LNCS), Languages, Compilers, and Run-time Systems (LCR98), volume 1511, pp. 205-218.  May 1998.  (gzipped Postscript(A4), gzipped Postscript(letter))
  • Hirotaka Yamamoto, Kenjiro Taura, Akinori Yonezawa.  "A Performance Comparison between Reference Counting and Global GC on Distributed-Memory Parallel Computers" In Proceedings of Joint Symposium on Parallel Processing (JSPP) (in Japanese).  June 1998.  (gzipped Postscript(A4))

Related Pages

 If you have any suggestions or comments, email us to .
Back to Yonezawa Laboratory