More radical ideas about gc and reference counting

via Digitalmars-d digitalmars-d at puremagic.com
Tue May 13 12:42:01 PDT 2014


On Tuesday, 13 May 2014 at 17:22:19 UTC, Steven Schveighoffer 
wrote:
> The idea I had was to make them pause-on-write. This means, 
> when the original process attempts to write to the page, it 
> gets a page-fault, which pauses the thread until the collector 
> is done with it. This causes the same halting that normally 
> happens with stop-the-world, but only on-demand, instead of 
> preemptively. If a thread is doing only reads, or is only 
> touching non-Scanned memory, it continues.

That would require a separate page table and would freeze threads 
real fast for global GC. It can work for local heaps like caches? 
I guess you could set up shared memory between two processes and 
use that as your heap.

> Just an idea, I make no claims to its actual benefits :)

Another idea is to use transactions and roll back the collector 
if someone does a write, for small heaps with few writes... 
Principle: run the collector when a core is idle and yield to 
cores that do real work.

But I dont think current gen CPUs can handle big transactions...




More information about the Digitalmars-d mailing list