Concurrent GC (for Windows)

Benjamin Thaut via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 3 22:44:20 PDT 2014


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.

Kind Regards
Benjamin Thaut


More information about the Digitalmars-d mailing list