On Mon, Jan 10, 2011 at 01:56:27PM -0500, Brian Burke said: > This sounds like it could be garbage collection related, especially > with a heap that large. Depending on your jvm tuning, a FGC could > take quite a while, effectively 'pausing' the JVM. > > Have you looked at something like jstat -gcutil or similar to monitor > the garbage collection?
I think you may have hit the nail on the head. Having checked the configuration again I noticed that the -server flag didn't appear to be present in the options passed to Java (I'm convinced it used to be there). As I understand it, this would mean that the Parallel GC wouldn't be implicitly enabled. If that's true then that's a definite strong candidate for causing the root process and only the root process to peg a single CPU. Anybody have any experience of the differences between -XX:+UseParallelGC and -XX:+UseConcMarkSweepGC with -XX:+UseParNewGC ? I believe -XX:+UseParallelGC is the default with -server so I suppose that's a good place to start but I'd appreciate any anecdotes or experiences.