[Gc] Re: Understanding why GC'ing increases to the double in time?

Martin Egholm Nielsen martin at egholm-nielsen.dk
Thu Feb 9 12:38:53 PST 2006


> Some sort of profile would also be useful.  But I'm not sure my earlier
> suggestion was helpful.  The collector is almost certainly spending it's
> time in mark_from.  It would be mildly useful to confirm that.  It would
> be more useful to confirm that this is not being called through the
> finalization code.
Still not had the time to progress within this field - stuck with the 
heap fragmentation (but now I'm getting rid of all the large memory 
allocations, and boiling them down to 10-20 kb allocations... Hopefully 
that'll do it for now...)

But nevertheless, I've been thinking about this world stopped thing.
Not having examined in details where I actually spent my world-stopped 
time, I can easily imagine this idea being pure giberish, but here goes:
Would it be possible (with a reasonable amount of hacking, that is), to 
measure the time spent in "mark_from" (if this is where time is spent), 
and then return if more than X ms has passed, and the resume from that 
point(er) the next time there is time. And perhaps to make a full 
collect every 20'th time.
In order not to spent all the time looking up time-spent, this could be 
flavoured with a couple of training runs perhaps learning how many 
cycles of the for-loops can be finished before actually checking 

I know this is an extreme embedded-tailoring of the GC, but is it at all 
possible to do?
Perhaps it would never work since the "reference counting" phase will 
never complete, hence not knowing if any segment can be released...

// Martin

More information about the Gc mailing list