From your thread dump is appears that only two threads were doing naything. What you really need to do it get several thread dump as few seconds appart and see what changed and what stayed the same - usually if a particualr thread is still working on the same tasks that can point out code that has a problem,
As far a monitoring GC, use JCosnole or VisualVM to monitor heap usage. Also, see this presentation on gathering and analyzing GC performance data:
(Oh no, the web site that had my presentation has been updated and I cannot find the presentation anymore!)
Fortunately, the white papers that the presentation was based on are available. Go to:
and get both the Java Garabage Collection Sattsical Analysis 101 and 201 papers.
The other reply was also for me.
The other reply was also for me.will enable the GC logging and will try to compare. In my Thread dump can I disable any threads?