[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...
More information about the Gc