Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!decwrl!parc!boehm From: boehm@parc.xerox.com (Hans Boehm) Newsgroups: comp.lang.c++ Subject: Re: GC references wanted Message-ID: Date: 28 May 91 19:01:20 GMT References: <3091@cod.NOSC.MIL> <16226@darkstar.ucsc.edu> Sender: news@parc.xerox.com Organization: Xerox PARC Lines: 31 A recent version of our collector can be obtained from arisia.xeroc.com:~ftp/pub/gc.tar.Z A much more elaborate version derived from this collector is part of the Xerox Portable Common Runtime system. Both collectors do not move objects, and do not require information about the layout of objects in the heap. They present a "malloc" style interface, and are not taylored to C++. (Most of the known clients are written in either C or Cedar.) Bartlett's collector is a copying compacting collector, and thus differs in all of the above respects. Both approaches have their advantages and disadvantages. The PCR collector relies on PCR threads and on the ability to intercept certain system calls. The current PCR package is significantly more difficult to bring up (especially on a nonSPARC machine) than the stand-alone collector. PCR also gives you threads and dynamic loading. The PCR collector is generational and largely concurrent. The simple version is neither. (But on a SPARCstation 2 with only a couple of megabytes of live data, interactive response should be OK with either one. With 30 MB of live data on a 16 MB machine, you want the PCR version. The PCR generational collector exhibits MUCH more local reference behavior.) The simple collector is described in Boehm & Weiser, "Garbage Collection in an Uncooperative Environment", Software Practice & Experience, Sept. 88. Some of the modifications incorporated into the PCR collector are described in Boehm, Demers, Shenker, "Mostly Parallel Garbage Collection", to appear in the SIGPLAN PLDI '91 proceedings. Hans (boehm@xerox.com)