]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | <!DOCTYPE HTML> |
2 | <html><head><title>A garbage collector for C and C++</title></head> | |
3 | <body> | |
4 | <table bgcolor="#f0f0ff" cellpadding="10%"> | |
5 | <tbody><tr> | |
6 | <td><a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcinterface.html">Interface Overview</a></td> | |
7 | <td><a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/04tutorial.pdf">Tutorial Slides</a></td> | |
8 | <td><a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/faq.html">FAQ</a></td> | |
9 | <td><a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/simple_example.html">Example</a></td> | |
10 | <td><a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source">Download</a></td> | |
11 | <td><a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/license.txt">License</a></td> | |
12 | </tr> | |
13 | </tbody></table> | |
14 | <h1>A garbage collector for C and C++</h1> | |
15 | <ul> | |
16 | <li><a href="#platforms">Platforms</a> | |
17 | </li><li><a href="#multiprocessors">Scalable multiprocessor versions</a> | |
18 | </li><li><a href="#details">Some collector details</a> | |
19 | </li><li><a href="#further">Further reading</a> | |
20 | </li><li><a href="#users">Current users</a> | |
21 | </li><li><a href="#collector">Local Links for this collector</a> | |
22 | </li><li><a href="#background">Local Background Links</a> | |
23 | </li><li><a href="#contacts">Contacts and Mailing List</a> | |
24 | </li></ul> | |
25 | [ This is an updated version of the page formerly at | |
26 | <tt>http://reality.sgi.com/boehm/gc.html</tt> | |
27 | and before that at | |
28 | <a href="ftp://parcftp.xerox.com/pub/gc/gc.html"> | |
29 | <tt>ftp://parcftp.xerox.com/pub/gc/gc.html</tt></a>.] | |
30 | <p> | |
31 | The <a href="http://www.hpl.hp.com/personal/Hans_Boehm">Boehm</a>-<a href="http://www.cs.cornell.edu/annual_report/00-01/bios.htm#demers">Demers</a>-<a href="http://www-sul.stanford.edu/weiser/">Weiser</a> | |
32 | conservative garbage collector can | |
33 | be used as a garbage collecting | |
34 | replacement for C <tt>malloc</tt> or C++ <tt>new</tt>. | |
35 | It allows you to allocate memory basically as you normally would, | |
36 | without explicitly deallocating memory that is no longer useful. | |
37 | The collector automatically recycles memory when it determines | |
38 | that it can no longer be otherwise accessed. | |
39 | A simple example of such a use is given | |
40 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/simple_example.html">here</a>. | |
41 | </p><p> | |
42 | The collector is also used by a number of programming language | |
43 | implementations that either use C as intermediate code, want | |
44 | to facilitate easier interoperation with C libraries, or | |
45 | just prefer the simple collector interface. | |
46 | For a more detailed description of the interface, see | |
47 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcinterface.html">here</a>. | |
48 | </p><p> | |
49 | Alternatively, the garbage collector may be used as | |
50 | a <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/leak.html">leak detector</a> | |
51 | for C or C++ programs, though that is not its primary goal. | |
52 | </p><p> | |
53 | Typically several versions will be available. | |
54 | Usually you should first try to use | |
55 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc.tar.gz"><tt>gc_source/gc.tar.gz</tt></a>, | |
56 | which is normally an older, more stable version. | |
57 | </p><p> | |
58 | If that fails, try the latest explicitly numbered version | |
59 | in <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/"> | |
60 | <tt>gc_source/</tt></a>. | |
61 | Later versions may contain additional features, platform support, | |
62 | or bug fixes, but are likely to be less well tested. | |
63 | Note that versions containing the letters <tt>alpha</tt> are even less | |
64 | well tested than others, especially on non-HP platforms. | |
65 | </p><p> | |
66 | A slightly older version of the garbage collector is now also | |
67 | included as part of the | |
68 | <a href="http://gcc.gnu.org/">GNU compiler</a> | |
69 | distribution. The source | |
70 | code for that version is available for browsing | |
71 | <a href="http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/boehm-gc/">here</a>. | |
72 | </p><p> | |
73 | The arguments for and against conservative garbage collection | |
74 | in C and C++ are briefly | |
75 | discussed in | |
76 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/issues.html">issues.html</a>. The beginnings of | |
77 | a frequently-asked-questions list are <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/faq.html">here</a>. | |
78 | </p><p> | |
79 | The garbage collector code is copyrighted by | |
80 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm">Hans-J. Boehm</a>, | |
81 | Alan J. Demers, | |
82 | <a href="http://www.xerox.com/">Xerox Corporation</a>, | |
83 | <a href="http://www.sgi.com/">Silicon Graphics</a>, | |
84 | and | |
85 | <a href="http://www.hp.com/">Hewlett-Packard Company</a>. | |
86 | It may be used and copied without payment of a fee under minimal restrictions. | |
87 | See the README file in the distribution or the | |
88 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/license.txt">license</a> for more details. | |
89 | <b>IT IS PROVIDED AS IS, | |
90 | WITH ABSOLUTELY NO WARRANTY EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK</b>. | |
91 | </p><p> | |
92 | Empirically, this collector works with most unmodified C programs, | |
93 | simply by replacing | |
94 | <tt>malloc</tt> with <tt>GC_malloc</tt> calls, | |
95 | replacing <tt>realloc</tt> with <tt>GC_realloc</tt> calls, and removing | |
96 | free calls. Exceptions are discussed | |
97 | in <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/issues.html">issues.html</a>. | |
98 | </p><h2><a name="platforms">Platforms</a></h2> | |
99 | The collector is not completely portable, but the distribution | |
100 | includes ports to most standard PC and UNIX/Linux platforms. | |
101 | The collector should work on Linux, *BSD, recent Windows versions, | |
102 | MacOS X, HP/UX, Solaris, | |
103 | Tru64, Irix and a few other operating systems. | |
104 | Some ports are more polished than others. | |
105 | <p> | |
106 | Irix pthreads, Linux threads, Win32 threads, Solaris threads | |
107 | (old style and pthreads), | |
108 | HP/UX 11 pthreads, Tru64 pthreads, and MacOS X threads are supported | |
109 | in recent versions. | |
110 | </p><h3>Separately distributed ports</h3> | |
111 | For MacOS 9/Classic use, Patrick Beard's latest port is available from | |
112 | <a href="http://homepage.mac.com/pcbeard/gc/"> | |
113 | <tt>http://homepage.mac.com/pcbeard/gc/</tt></a>. | |
114 | (Unfortunately, that's now quite dated. | |
115 | I'm not in a position to test under MacOS. Although I try to | |
116 | incorporate changes, it is impossible for | |
117 | me to update the project file.) | |
118 | <p> | |
119 | Precompiled versions of the collector for NetBSD are available | |
120 | <a href="ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/devel/boehm-gc/README.html">here</a> | |
121 | or | |
122 | <a href="http://www.netbsd.org/packages/devel/boehm-gc/README.html">here</a>. | |
123 | </p><p> | |
124 | <a href="http://www.debian.org/">Debian Linux</a> includes prepackaged | |
125 | versions of the collector. | |
126 | </p><h2><a name="multiprocessors">Scalable multiprocessor versions</a></h2> | |
127 | Kenjiro Taura, Toshio Endo, and Akinori Yonezawa have made available | |
128 | a <a href="http://www.yl.is.s.u-tokyo.ac.jp/gc/">parallel collector</a> | |
129 | based on this one. Their collector takes advantage of multiple processors | |
130 | during a collection. Starting with collector version 6.0alpha1 | |
131 | we also do this, though with more modest processor scalability goals. | |
132 | Our approach is discussed briefly in | |
133 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/scale.html"><tt>scale.html</tt></a>. | |
134 | <h2><a name="details">Some Collector Details</a></h2> | |
135 | The collector uses a <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/complexity.html">mark-sweep</a> algorithm. | |
136 | It provides incremental and generational | |
137 | collection under operating systems which provide the right kind of | |
138 | virtual memory support. (Currently this includes SunOS[45], IRIX, | |
139 | OSF/1, Linux, and Windows, with varying restrictions.) | |
140 | It allows <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/finalization.html"><i>finalization</i></a> code | |
141 | to be invoked when an object is collected. | |
142 | It can take advantage of type information to locate pointers if such | |
143 | information is provided, but it is usually used without such information. | |
144 | ee the README and | |
145 | <tt>gc.h</tt> files in the distribution for more details. | |
146 | <p> | |
147 | For an overview of the implementation, see <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcdescr.html">here</a>. | |
148 | </p><p> | |
149 | The garbage collector distribution includes a C string | |
150 | (<a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/cordh.txt"><i>cord</i></a>) package that provides | |
151 | for fast concatenation and substring operations on long strings. | |
152 | A simple curses- and win32-based editor that represents the entire file | |
153 | as a cord is included as a | |
154 | sample application. | |
155 | </p><p> | |
156 | Performance of the nonincremental collector is typically competitive | |
157 | with malloc/free implementations. Both space and time overhead are | |
158 | likely to be only slightly higher | |
159 | for programs written for malloc/free | |
160 | (see Detlefs, Dosser and Zorn's | |
161 | <a href="ftp://ftp.cs.colorado.edu/pub/techreports/zorn/CU-CS-665-93.ps.Z">Memory Allocation Costs in Large C and C++ Programs</a>.) | |
162 | For programs allocating primarily very small objects, the collector | |
163 | may be faster; for programs allocating primarily large objects it will | |
164 | be slower. If the collector is used in a multithreaded environment | |
165 | and configured for thread-local allocation, it may in some cases | |
166 | significantly outperform malloc/free allocation in time. | |
167 | </p><p> | |
168 | We also expect that in many cases any additional overhead | |
169 | will be more than compensated for by decreased copying etc. | |
170 | if programs are written | |
171 | and tuned for garbage collection. | |
172 | </p><h1><a name="further">Further Reading:</a></h1> | |
173 | <b>The beginnings of a frequently asked questions list for this | |
174 | collector are <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/faq.html">here</a></b>. | |
175 | <p> | |
176 | <b>The following provide information on garbage collection in general</b>: | |
177 | </p><p> | |
178 | Paul Wilson's <a href="ftp://ftp.cs.utexas.edu/pub/garbage">garbage collection ftp archive</a> and <a href="ftp://ftp.cs.utexas.edu/pub/garbage/gcsurvey.ps">GC survey</a>. | |
179 | </p><p> | |
180 | The Ravenbrook <a href="http://www.memorymanagement.org/"> | |
181 | Memory Management Reference</a>. | |
182 | </p><p> | |
183 | David Chase's | |
184 | <a href="http://www.iecc.com/gclist/GC-faq.html">GC FAQ</a>. | |
185 | </p><p> | |
186 | Richard Jones' | |
187 | <a href="http://www.ukc.ac.uk/computer_science/Html/Jones/gc.html"> | |
188 | GC page</a> and | |
189 | <a href="http://www.cs.kent.ac.uk/people/staff/rej/gcbook/gcbook.html"> | |
190 | his book</a>. | |
191 | </p><p> | |
192 | <b>The following papers describe the collector algorithms we use | |
193 | and the underlying design decisions at | |
194 | a higher level.</b> | |
195 | </p><p> | |
196 | (Some of the lower level details can be found | |
197 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcdescr.html">here</a>.) | |
198 | </p><p> | |
199 | The first one is not available | |
200 | electronically due to copyright considerations. Most of the others are | |
201 | subject to ACM copyright. | |
202 | </p><p> | |
203 | Boehm, H., "Dynamic Memory Allocation and Garbage Collection", <i>Computers in Physics | |
204 | 9</i>, 3, May/June 1995, pp. 297-303. This is directed at an otherwise sophisticated | |
205 | audience unfamiliar with memory allocation issues. The algorithmic details differ | |
206 | from those in the implementation. There is a related letter to the editor and a minor | |
207 | correction in the next issue. | |
208 | </p><p> | |
209 | Boehm, H., and <a href="http://www.ubiq.com/hypertext/weiser/weiser.html">M. Weiser</a>, | |
210 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/spe_gc_paper">"Garbage Collection in an Uncooperative Environment"</a>, | |
211 | <i>Software Practice & Experience</i>, September 1988, pp. 807-820. | |
212 | </p><p> | |
213 | Boehm, H., A. Demers, and S. Shenker, <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/papers/pldi91.ps.Z">"Mostly Parallel Garbage Collection"</a>, Proceedings | |
214 | of the ACM SIGPLAN '91 Conference on Programming Language Design and Implementation, | |
215 | <i>SIGPLAN Notices 26</i>, 6 (June 1991), pp. 157-164. | |
216 | </p><p> | |
217 | Boehm, H., <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/papers/pldi93.ps.Z">"Space Efficient Conservative Garbage Collection"</a>, Proceedings of the ACM | |
218 | SIGPLAN '93 Conference on Programming Language Design and Implementation, <i>SIGPLAN | |
219 | Notices 28</i>, 6 (June 1993), pp. 197-206. | |
220 | </p><p> | |
221 | Boehm, H., "Reducing Garbage Collector Cache Misses", | |
222 | <i> Proceedings of the 2000 International Symposium on Memory Management </i>. | |
223 | <a href="http://portal.acm.org/citation.cfm?doid=362422.362438"> | |
224 | Official version.</a> | |
225 | <a href="http://www.hpl.hp.com/techreports/2000/HPL-2000-99.html"> | |
226 | Technical report version.</a> Describes the prefetch strategy | |
227 | incorporated into the collector for some platforms. Explains why | |
228 | the sweep phase of a "mark-sweep" collector should not really be | |
229 | a distinct phase. | |
230 | </p><p> | |
231 | M. Serrano, H. Boehm, | |
232 | "Understanding Memory Allocation of Scheme Programs", | |
233 | <i>Proceedings of the Fifth ACM SIGPLAN International Conference on | |
234 | Functional Programming</i>, 2000, Montreal, Canada, pp. 245-256. | |
235 | <a href="http://www.acm.org/pubs/citations/proceedings/fp/351240/p245-serrano/"> | |
236 | Official version.</a> | |
237 | <a href="http://www.hpl.hp.com/techreports/2000/HPL-2000-62.html"> | |
238 | Earlier Technical Report version.</a> Includes some discussion of the | |
239 | collector debugging facilities for identifying causes of memory retention. | |
240 | </p><p> | |
241 | Boehm, H., | |
242 | "Fast Multiprocessor Memory Allocation and Garbage Collection", | |
243 | <a href="http://www.hpl.hp.com/techreports/2000/HPL-2000-165.html"> | |
244 | HP Labs Technical Report HPL 2000-165</a>. Discusses the parallel | |
245 | collection algorithms, and presents some performance results. | |
246 | </p><p> | |
247 | Boehm, H., "Bounding Space Usage of Conservative Garbage Collectors", | |
248 | <i>Proceeedings of the 2002 ACM SIGPLAN-SIGACT Symposium on Principles of | |
249 | Programming Languages</i>, Jan. 2002, pp. 93-100. | |
250 | <a href="http://portal.acm.org/citation.cfm?doid=503272.503282"> | |
251 | Official version.</a> | |
252 | <a href="http://www.hpl.hp.com/techreports/2001/HPL-2001-251.html"> | |
253 | Technical report version.</a> | |
254 | Includes a discussion of a collector facility to much more reliably test for | |
255 | the potential of unbounded heap growth. | |
256 | </p><p> | |
257 | <b>The following papers discuss language and compiler restrictions necessary to guaranteed | |
258 | safety of conservative garbage collection.</b> | |
259 | </p><p> | |
260 | We thank John Levine and JCLT for allowing | |
261 | us to make the second paper available electronically, and providing PostScript for the final | |
262 | version. | |
263 | </p><p> | |
264 | Boehm, H., <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/papers/pldi96.ps.gz">``Simple | |
265 | Garbage-Collector-Safety''</a>, Proceedings | |
266 | of the ACM SIGPLAN '96 Conference on Programming Language Design | |
267 | and Implementation. | |
268 | </p><p> | |
269 | Boehm, H., and D. Chase, <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/papers/boecha.ps.gz"> | |
270 | ``A Proposal for Garbage-Collector-Safe C Compilation''</a>, | |
271 | <i>Journal of C Language Translation 4</i>, 2 (Decemeber 1992), pp. 126-141. | |
272 | </p><p> | |
273 | <b>Other related information: </b> | |
274 | </p><p> | |
275 | The Detlefs, Dosser and Zorn's <a href="ftp://ftp.cs.colorado.edu/pub/techreports/zorn/CU-CS-665-93.ps.Z">Memory Allocation Costs in Large C and C++ Programs</a>. | |
276 | This is a performance comparison of the Boehm-Demers-Weiser collector to malloc/free, | |
277 | using programs written for malloc/free. | |
278 | </p><p> | |
279 | Joel Bartlett's <a href="ftp://ftp.digital.com/pub/DEC/CCgc">mostly copying conservative garbage collector for C++</a>. | |
280 | </p><p> | |
281 | John Ellis and David Detlef's <a href="ftp://parcftp.xerox.com/pub/ellis/gc/gc.ps">Safe Efficient Garbage Collection for C++</a> proposal. | |
282 | </p><p> | |
283 | Henry Baker's <a href="http://home.pipeline.com/%7Ehbaker1/">paper collection</a>. | |
284 | </p><p> | |
285 | Slides for Hans Boehm's <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/myths.ps">Allocation and GC Myths</a> talk. | |
286 | </p><h1><a name="users">Current users:</a></h1> | |
287 | Known current users of some variant of this collector include: | |
288 | <p> | |
289 | The runtime system for <a href="http://gcc.gnu.org/java">GCJ</a>, | |
290 | the static GNU java compiler. | |
291 | </p><p> | |
292 | <a href="http://w3m.sourceforge.net/">W3m</a>, a text-based web browser. | |
293 | </p><p> | |
294 | Some versions of the Xerox DocuPrint printer software. | |
295 | </p><p> | |
296 | The <a href="http://www.mozilla.org/">Mozilla</a> project, as leak | |
297 | detector. | |
298 | </p><p> | |
299 | The <a href="http://www.go-mono.com/">Mono</a> project, | |
300 | an open source implementation of the .NET development framework. | |
301 | </p><p> | |
302 | The <a href="http://www.gnu.org/projects/dotgnu/">DotGNU Portable.NET | |
303 | project</a>, another open source .NET implementation. | |
304 | </p><p> | |
305 | The <a href="http://irssi.org/">Irssi IRC client</a>. | |
306 | </p><p> | |
307 | <a href="http://titanium.cs.berkeley.edu/">The Berkeley Titanium project</a>. | |
308 | </p><p> | |
309 | <a href="http://www.nag.co.uk/nagware_fortran_compilers.asp">The NAGWare f90 Fortran 90 compiler</a>. | |
310 | </p><p> | |
311 | Elwood Corporation's <a href="http://www.elwood.com/eclipse-info/index.htm"> | |
312 | Eclipse</a> Common Lisp system, C library, and translator. | |
313 | </p><p> | |
314 | The <a href="http://www-sop.inria.fr/mimosa/fp/Bigloo/">Bigloo | |
315 | Scheme</a> | |
316 | and <a href="http://kaolin.unice.fr/%7Eserrano/camloo.html">Camloo ML | |
317 | compilers</a> | |
318 | written by Manuel Serrano and others. | |
319 | </p><p> | |
320 | Brent Benson's <a href="http://ftp.cs.indiana.edu/pub/scheme-repository/imp/">libscheme</a>. | |
321 | </p><p> | |
322 | The <a href="http://www.cs.rice.edu/CS/PLT/packages/mzscheme/index.html">MzScheme</a> scheme implementation. | |
323 | </p><p> | |
324 | The <a href="http://www.cs.washington.edu/research/projects/cecil/www/cecil-home.html">University of Washington Cecil Implementation</a>. | |
325 | </p><p> | |
326 | <a href="http://www.icsi.berkeley.edu/Sather/">The Berkeley Sather implementation</a>. | |
327 | </p><p> | |
328 | <a href="http://www.cs.berkeley.edu/%7Eharmonia/">The Berkeley Harmonia Project</a>. | |
329 | </p><p> | |
330 | The <a href="http://www.cs.arizona.edu/sumatra/toba/">Toba</a> Java Virtual | |
331 | Machine to C translator. | |
332 | </p><p> | |
333 | The <a href="http://www.gwydiondylan.org/">Gwydion Dylan compiler</a>. | |
334 | </p><p> | |
335 | The <a href="http://gcc.gnu.org/onlinedocs/gcc/Objective-C.html"> | |
336 | GNU Objective C runtime</a>. | |
337 | </p><p> | |
338 | <a href="http://www.math.uiuc.edu/Macaulay2">Macaulay 2</a>, a system to support | |
339 | research in algebraic geometry and commutative algebra. | |
340 | </p><p> | |
341 | The <a href="http://www.vestasys.org/">Vesta</a> configuration management | |
342 | system. | |
343 | </p><p> | |
344 | <a href="http://www.visual-prolog.com/vip6">Visual Prolog 6</a>. | |
345 | </p><p> | |
346 | <a href="http://asymptote.sf.net/">Asymptote LaTeX-compatible | |
347 | vector graphics language.</a> | |
348 | ||
349 | </p><h1><a name="collector">More collector information at this site</a></h1> | |
350 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/simple_example.html">A simple illustration of how to build and | |
351 | use the collector.</a>. | |
352 | <p> | |
353 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcinterface.html">Description of alternate interfaces to the | |
354 | garbage collector.</a> | |
355 | </p><p> | |
356 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/04tutorial.pdf">Slides from an ISMM 2004 tutorial about the GC.</a> | |
357 | </p><p> | |
358 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/faq.html">A FAQ (frequently asked questions) list.</a> | |
359 | </p><p> | |
360 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/leak.html">How to use the garbage collector as a leak detector.</a> | |
361 | </p><p> | |
362 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/debugging.html">Some hints on debugging garbage collected | |
363 | applications.</a> | |
364 | </p><p> | |
365 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcdescr.html">An overview of the implementation of the | |
366 | garbage collector.</a> | |
367 | </p><p> | |
368 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/tree.html">The data structure used for fast pointer lookups.</a> | |
369 | </p><p> | |
370 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/scale.html">Scalability of the collector to multiprocessors.</a> | |
371 | </p><p> | |
372 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source">Directory containing garbage collector source.</a> | |
373 | ||
374 | </p><h1><a name="background">More background information at this site</a></h1> | |
375 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/bounds.html">An attempt to establish a bound on space usage of | |
376 | conservative garbage collectors.</a> | |
377 | <p> | |
378 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/complexity.html">Mark-sweep versus copying garbage collectors | |
379 | and their complexity.</a> | |
380 | </p><p> | |
381 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/conservative.html">Pros and cons of conservative garbage collectors, | |
382 | in comparison to other collectors. | |
383 | </a> | |
384 | </p><p> | |
385 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/issues.html">Issues related to garbage collection vs. | |
386 | manual memory management in C/C++.</a> | |
387 | </p><p> | |
388 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/example.html">An example of a case in which garbage collection | |
389 | results in a much faster implementation as a result of reduced | |
390 | synchronization.</a> | |
391 | </p><p> | |
392 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/nonmoving">Slide set discussing performance of nonmoving | |
393 | garbage collectors.</a> | |
394 | </p><p> | |
395 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/popl03/web"> | |
396 | Slide set discussing <i>Destructors, Finalizers, and Synchronization</i> | |
397 | (POPL 2003).</a> | |
398 | </p><p> | |
399 | <a href="http://portal.acm.org/citation.cfm?doid=604131.604153"> | |
400 | Paper corresponding to above slide set.</a> | |
401 | (<a href="http://www.hpl.hp.com/techreports/2002/HPL-2002-335.html"> | |
402 | Technical Report version</a>.) | |
403 | </p><p> | |
404 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_bench.html">A Java/Scheme/C/C++ garbage collection benchmark.</a> | |
405 | </p><p> | |
406 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/myths.ps">Slides for talk on memory allocation myths.</a> | |
407 | </p><p> | |
408 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/gctalk.ps">Slides for OOPSLA 98 garbage collection talk.</a> | |
409 | </p><p> | |
410 | <a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/papers">Related papers.</a> | |
411 | </p><h1><a name="contacts">Contacts and Mailing List</a><a></a></h1> | |
412 | <a>We have recently set up two mailing list for collector announcements | |
413 | and discussions: | |
414 | </a><ul> | |
415 | <li><a href="mailto:gc-announce@linux.hpl.hp.com">gc-announce@linux.hpl.hp.com</a> | |
416 | is used for announcements of new versions. Postings are restricted. | |
417 | We expect this to always remain a very low volume list. | |
418 | </li><li><a href="mailto:gc@linux.hpl.hp.com">gc@linux.hpl.hp.com</a> is used for | |
419 | discussions, bug reports, and the like. Subscribers may post. | |
420 | On-topic posts by nonsubscribers will usually also be accepted, but | |
421 | it may take some time to review them. | |
422 | </li></ul> | |
423 | To subscribe to these lists, send a mail message containing the | |
424 | word "subscribe" to | |
425 | <a href="mailto:gc-announce-request@linux.hpl.hp.com?subject=subscribe">gc-announce-request@linux.hpl.hp.com</a> | |
426 | or to | |
427 | <a href="mailto:gc-request@linux.hpl.hp.com?subject=subscribe">gc-request@linux.hpl.hp.com</a>. | |
428 | (Please ignore the instructions about web-based subscription. | |
429 | The listed web site is behind the HP firewall.) | |
430 | <p> | |
431 | The archives for these lists appear | |
432 | <a href="http://www.hpl.hp.com/hosted/linux/mail-archives">here</a>. | |
433 | The gc list archive may also be read at | |
434 | <a href="http://dir.gmane.org/gmane.comp.programming.garbage-collection.boehmgc">gmane.org</a>. | |
435 | </p><p> | |
436 | Some prior discussion of the collector has taken place on the gcc | |
437 | java mailing list, whose archives appear | |
438 | <a href="http://gcc.gnu.org/ml/java/">here</a>, and also on | |
439 | <a href="http://lists.tunes.org/mailman/listinfo/gclist">gclist@iecc.com</a>. | |
440 | </p><p> | |
441 | Comments and bug reports may also be sent to | |
442 | (<a href="mailto:Hans_Boehm@hp.com">Hans.Boehm@hp.com</a>) or | |
443 | (<a href="mailto:boehm@acm.org">boehm@acm.org</a>), but the gc | |
444 | mailing list is usually preferred. | |
445 | ||
446 | </p></body></html> |