> A way to avoid this [as Boehm does (?)] would be to throw up a write > barrier during collection and search it in the parent thread for new > references--I am somewhat scared of doing so since it sounds hard :) I suppose some more options would be: if you ever call ObjectSpace.each_object [or dereference a weak hash] have it wait for any outstandingchild GC's at that point [before performing it]. You could also keep track if you've used any "resurrecting" functions such as these while a GC is running, and if you have, ignore the return value from it. You could have it do a single threaded GC after child GC returns or what not. Just thinking out loud. I'm not certain if the speed increase is because of threading or because it runs the GC fewer times when there is more memory in use. This could use some more research. I know lloyd's GC tests can be found at http://lloydforge.org/projects/misc/ -- those and making GC report stats might shed some light. Some more speed tests can be found at the bottom of http://betterlogic.com/roger/?p=496 Thanks! -=R