[gclist] DGC: a portable distributed garbage collector for C/C++

Yamamoto Hirotaka ymmt@is.s.u-tokyo.ac.jp
05 Feb 1999 12:36:16 +0900

Hello everybody,

We are pleased to announce our distributed GC library for C/C++.
It is available at our ftp server at:
also check out our WWW page at:

DGC is a conservative distributed garbage collection library
built on top of Boehm and Demers' collector for (mainly)

It is deliberately designed to be entirely separated from both
languages and other runtime systems to be usable for various
kinds of languages and distributed environments.
Most notably, it can use any kind of message-passing system
without ANY modification to the library.

Currently it includes some sample but useful bindings of
	* MPI1.0
	* SCore-S (RWC's bare cluster software)
	* SMP (using shared-memory of processes for message-passing)
as its underlying message-passing systems.

It is tested and runs on:
	* Solaris2.5.1 and 2.6 on SPARC and i386
	* IRIX6.4
	* Linux-2.x
but may work on most modern Unix-like systems.

Please send your requests, comments and suggestions to:

Have fun,

Hirotaka Yamamoto, Kenjiro Taura, Akinori Yonezawa
Yonezawa Group, University of Tokyo, Japan.
Email: {ymmt,tau,yonezawa}@is.s.u-tokyo.ac.jp

### from README of DGC-0.1b

DGC is a conservative garbage collector for distributed-memory parallel
computers and/or PC/WS clusters.  More generally, it works as a
distributed garbage collector for C/C++ programs in message-passing
environment.  For details about conservative collectors, please see

In the following, a "public object" is defined to be a region of memory
allocated by GC_malloc or its relatives (e.g. GC_malloc_atomic).

Any public object can be referenced by remote processors through remote
references.  In our library, a remote reference is represented as a
pointer to a specific /stub/ object on remote processors.  Public
objeccts that are referenced by remote processors will not be reclaimed
even if there are no local references to it.

DGC provides ways to 1) create remote references, and 2) distinguish
pointers to /stub/ objects from pointers to other regions of memory, and
3) dereference remote references.  In addition, DGC automatically
reclaims public objects that are no longer referenced by any processor.

DGC implements some distributed GC algorithms including two-versions
of Weighted Reference Counting, stop-the-world type distributed
mark-and-sweep, and most notably, conbinations of them.

DGC is deliberately designed to be highly modularized; for example, you
can use DGC with your own message-passing library without ANY
modification.  As it is written in C, DGC can be used as a useful
runtime library for many distributed systems.