← Back to context

Comment by kaba0

3 years ago

Anyone claiming something like this obviously hasn’t dig into GCs. You honestly think that writing into memory at each access, especially atomically is anywhere near the performance of a GC that can do most of its work in parallel and just flip a bit to basically “having deleted” everything no longer accessible?

a bit flip is not writing?

Also do traces not have to work atomically? The program needs to stop, you can’t have it check roots as it runs.

I’ll admit I am no GC researcher with ph.D experience, but your comment makes it seem you aren’t either.

  • Tracing is batched up in GC pauses, rather than on every access as with naive RC. It is necessary to stop the world, but the work done in the pause does not need to use atomic operations.

    Atomics are handy in a parallel/multi-core tracing collector, but IME pointer chasing in tracing somehow manages to cover the time it takes to do atomic operations.