[Full GC] halts my application for 25 seconds
843829Feb 9 2007 — edited Feb 12 2007Hello, I need to avoid this happening. I have tried using
-XX:+UseParallelGC
and
-XX:+UseConcMarkSweepGC
.....with slightly differing results but at some point within the first 5 minutes of the application running, a 25 second full GC takes place that virtually halts the application.
I am using a T1000 that has 24 core chip (i.e. 24 threads) with solaris 10. I am using jvm hotspot 1.5.
My application is not typical, the first thing it does is load a serialized object that is approximately 1GB in size. This object lives for the entire application. Then 20 threads are started which do all sorts of computation where the object is used as a read only database. (just in case you are a T1000 expert I do not do any floating point arithmetic which would be a bottleneck on the T1000)
I am using the 32 bit JVM since when I switched to 64 bit JVM the application slowed down by about 30%. I can get a max heap size of 4GB on solaris 10 using the 32 bit JVM but a 2GB heap size is sufficient to run my application. Even when I set the heap size to 4GB I still get a 25 second FULL GC delay.
I believe my large object is being loaded somewhere in the heap and then subsequently moved and maybe this is causing the problem??? (not sure)
The threads use mostly global and local variables. Very few new objects are created on the fly.
Any guidance would be much appreciated.
For the record -XX:+UseConcMarkSweepGC is slightly better then -XX:+UseParallelGC in my application when using the default JVM values.