Concurrent GC (for Windows)

Rainer Schuetze via Digitalmars-d digitalmars-d at puremagic.com
Wed Jun 4 13:26:14 PDT 2014



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.


More information about the Digitalmars-d mailing list