On 04.06.2014 07:44, Benjamin Thaut wrote:
Am 03.06.2014 09:35, schrieb Rainer Schuetze:
Hi,
more GC talk: the last couple of days, I've been experimenting with
implementing a concurrent GC on Windows inspired by Leandros CDGC.
Here's a report on my experiments:
http://rainers.github.io/visuald/druntime/concurrentgc.html
tl;dr: there is a working(?) partially concurrent GC here:
https://github.com/rainers/druntime/tree/concurrent_gc2
but it eats a whole lot of memory.
Rainer
This sounds quite promising.
Did you think about using a write barrier instead of doing the chech per
page? Because the way you propose will mean, that all writes, no matter
if relevant for the GC or not, will cause the GC to reconsider the page.
If we implement a write barrier into the front end that only gets called
when a write through a pointer to a pointer happens, the GC could only
rescan memory blocks that actually have changed pointers. Also the GC
might be able to remember the old pointer value before the write is
execued resulting in a consitent snapshot of the heap, which would
eliminate the need to rescan after the background thread is finished.
Yes, write barriers are a good addition to this, but is way more
difficult to implement and will meet more resistance from Walter. It's
still something I'd like to look into.