I must complement the author on his slides. They were quite well done.
As for the algorithm, it seems pretty straight forward, minus the snapshotting part. These snapshots obviously have some overhead, which is dependent on the actual mutator code running. The overhead will certainly be less-than (or at most equal) the overhead using a semi-space collector, but it seems once again that this is only suitable for some applications, and memory constrained is probably not one of them.
I’m not current on the best in breed real-time collectors. Does anyone know how this stacks up against what’s currently out there?
Edit: Actually, it’s possibly more overhead than a semi-space collector, I think. We’re basically duplicating the stack for every thread, though, there’s probably the possibility of an optimization here in which you only snapshot unique heap pointers into a single data structure… with the caveat that you now need synchronization primitives to pull that off.
Any idea how easy is to incorporate it to a system currently using Boehm GC?