Easy & huge GC optimizations

Rainer Schuetze via Digitalmars-d digitalmars-d at puremagic.com
Fri May 23 11:14:25 PDT 2014



On 23.05.2014 18:41, Etienne wrote:
> On 2014-05-23 12:33 PM, Etienne wrote:
>> It only skips the inner search of the pool, like marking it NO_SCAN if a
>> sample of the pointers that pointed to it are still alive.
>
> Sorry that's not true.
>
> It's like marking it NO_INTERIOR while it being still SCAN. By default,
> all the pages would be marked if the sample pointers to the pool are
> still alive.

Ok, so based on the samples, you skip fine grained marking of the 
objects inside the pool. The memory still needs to be scanned for 
references, though.
I don't think this buys you a lot. You will have to scan more memory 
than when you can skip allocations that are no longer referenced.

BTW: How do you detect the sample pointers are alive? Or do you mean 
just the roots?

>
> And so the objective is to be able to skip collections. How many
> collections are executed only to recover only 1-2% of the memory?

I agree it would be good to have a measure to detect if it makes sense 
to run the full collection at all. I don't see how the sample pointers 
help here.


More information about the Digitalmars-d mailing list