Garbage collector stopping my world for half a second

Martin Egholm Nielsen martin@egholm-nielsen.dk
Thu Dec 1 19:59:00 GMT 2005


Hi guys,

>  > Could you remind me what your platform is?
It's my embedded 133 Mhz PPC405EP - so it's nothing like the pc 
analogies you mention ;-(

>  > For a modern PC, with a heap size of 8MB, and assuming the root size is
>  > reasonable, 60 msecs should be on the high side.  (The GC time should be
>  > roughly proportional to <live data size> + <root size>.  On a GC_Bench
>  > variant, the marker seems to scan roughly 200-250MB/sec on a single 2
>  > GHz P4 Xeon.  There is a bit of other overhead associated with
>  > collections, but that's the lion's share.)
>  > 
>  > Unless you're on a very slow processor, the 360msecs seems anomalous to
>  > me.  It would be useful to understand what's going on during that time.
>  > Presumably paging is not an issue?
So, yes it's a slow processor, I guess... And there is no paging, no.

>  > More generally, the GC provides some support for incremental collection,
>  > but AFAIK that's not really supported by gcj, and hence may take some
>  > effort to get to work for your application.
Bummer! :-)
But I stumbled across some "SMALL_CONFIG" parameter stuff googling old 
postings, and ofcourse the "divisor" variable, as well.
However, I never got a feeling of how this latter parameter would affect 
things...

> With gcj our root set is way, way too big.  Fixing this is at the top
> of my list of things to fix.
But, since I've seen gc-times of 60 msecs for a simple test-example, I 
guess the root-set scanning-time is below (~equal to) this time, and 
similar regardless the other application?! If this is the case, the 
remainder 300 msecs is <live data size>...

Best regards,
  Martin Egholm



More information about the Java mailing list