The new exact Cacao Garbage Collector

For a long time Cacao used the BoehmGC and didn't care about its heap. And it was good. But time went by and the need for a new exact GC arose. This is what this page is all about.

The following is a list of pages related to the new GC in any way. Feel free to add new ones here.

Some empirical data that might be interesting:

Design Plan Overview

The main phases of the design and implementation are listed below. Let's see how much we can stick to it. But remember this should be more a guideline than a rule. Don't be too upset if things turn out to take a different (but maybe better) course.

  1. Simple Mark-and-Sweep GC for a single-threaded environment. Keywords: reference-location, root-set
  2. Introduce GC-Points to extend GC to multi-threaded environments with stop-the-world. Keywords: thread-suspension, code-patching
  3. Introduce Generations to dramatically speedup the GC. Keywords: copying-algorithm, backward-references
  4. Test several GC strategies for the old Generation. Keywords: mostly-concurrent, mostly-parallel, incremental

Remember these important things

TOCHECK List

Things that need to be checked. Consider these to be unchecked assertions

TODO List

Useful links

cacaowiki: GarbageCollector (last edited 2007-06-22 09:59:08 by MichaelStarzinger)