1 Title: Immix mark-region garbage collector
2 Tags: en, d, dgc, immix, gc, mark-region, tracing, paper, copying, moving
4 Yesterday Fawzi Mohamed pointed me to a `Tango forums post`__ (*<rant>god!
5 I hate forums</rant>* =) where Keith Nazworth announces he wants to start a new
6 GC implementation in his spare time.
8 __ http://www.dsource.org/projects/tango/forums/topic/743
10 He wants to progressively implement the `Immix Garbage Collector`__.
12 __ http://www.cs.utexas.edu/users/speedway/DaCapo/papers/immix-pldi-2008.pdf
14 I read the paper and it looks interesting, and it looks like it could use the
15 parallelization I plan to add to the current GC, so maybe our efforts can be
16 coordinated to leave the possibility to integrate both improvements together in
19 A few words about the paper: the heap organization is pretty similar to the one
20 in the current GC implementation, except Immix proposes that pages should not
21 be divided in fixed-size *bins*, but do *pointer bump* variable sized
22 allocations inside a block. Besides that, all other optimizations that I saw in
23 the paper are somehow general and can be applied to the current GC at some
24 point (but some of them maybe don't fit as well). Among these optimizations
25 are: opportunistic moving to avoid fragmentation, parallel marking,
26 thread-local pools/allocator and generations. Almost all of the optimizations
27 can be implemented incrementally, starting with a very basic collector which is
28 not very far from the actual one.
30 There were some discussion on adding the necessary `hooks to the language to
31 allow a reference counting based garbage collector`__ in the newsgroup (don't
32 be fooled by the subject! Is not about disabling the GC =) and `weak references
33 implementation`__. There's a lot of discussion about GC lately in D, which is
36 __ http://lists.puremagic.com/pipermail/digitalmars-d/2009-April/thread.html#054613
37 __ http://lists.puremagic.com/pipermail/digitalmars-d/2009-April/thread.html#54121
39 .. vim: set et sw=4 sts=4 :