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

Martin Egholm Nielsen martin at egholm-nielsen.dk
Tue Mar 14 06:59:57 PST 2006


> I actually wasn't expecting this to be a single object.
Heh, see what ignorance can result in :-)

> I would guess that it's an array of references.
> 
> The real question might be what any nonzero components point to.
> 
> There is a gcj_describe_type_fn function in gcc/libjava/boehm.cc in the
> gcc source tree, which is unfortunately declared static.  It tries to
> write the class name for a gcj object into a buffer.  Invoking that on the
> object as a whole, and on nested pointers (e.g. words with GC_base(word)
> != 0) might tell you where this is coming from.
Aheem, I have to admit I have no idea how to invoke that function from 
within the GC code - it would have to be from GCJ context (as I see it).
Help?
(I tried dumping the object char for char, but that didn't result in 
anything helpfull - at least not the way I did it, anyway)

> I think your best hope is that there will be an easy way to avoid
> allocating this object. 
I vote for this approach.

However, I still think it is funny that the moment the large composite 
object appear, the next-to-largest from before disappears:

=== Small ===
     MEN adding composite with size 8192
     MEN adding composite with size 128
     MEN adding composite with size 128
     MEN adding composite with size 340
     MEN adding composite with size 340
     MEN adding composite with size 146
     MEN adding composite with size 146
     MEN adding composite with size 256
     MEN adding composite with size 128
     MEN adding composite with size 128
--> MEN adding composite with size 21506
     MEN adding composite with size 769
     MEN adding composite with size 1127
     MEN adding composite with size 128
     MEN adding composite with size 256
     MEN adding composite with size 204
     MEN adding composite with size 128

=== Large ===
     MEN adding composite with size 8192
     MEN adding composite with size 128
     MEN adding composite with size 128
     MEN adding composite with size 340
     MEN adding composite with size 340
     MEN adding composite with size 146
     MEN adding composite with size 146
--> MEN adding composite with size 172034
     MEN adding composite with size 256
     MEN adding composite with size 128
     MEN adding composite with size 128
     MEN adding composite with size 769
     MEN adding composite with size 1127
     MEN adding composite with size 128
     MEN adding composite with size 256
     MEN adding composite with size 204
     MEN adding composite with size 128

and the rest of the composites (>100) can be matched one-to-one.
Further, the the composite of word-size 21506 appear extremely early in 
the application, before anything has been done, actually (some few Java 
API invocations - but no one specific)...

Don't know if this has anything to say?!

// Martin



More information about the Gc mailing list