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.