Hello all,
we are running a Java application that is sometimes being stopped in its execution. We investigated that it is caused by Full Garbage Collector being run immediately after normal GC. See attached GC log. Since our application is a throughput one, we can't allow such stop-the-worlds that delay from 7 to 10 seconds. Those delays are seen even if the application is put outside live traffic and is (almost) idle.
We are using parameters "-Xmx2048M -Xms2048M -Xmn682M -Xss128k" for the JVM. We used that parameters in past many times with no such behavior. Searching on web I found some recommendation to add parameters "-XX:ParallelGCThreads=5 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=20 -XX:MaxTenuringThreshold=10" that really helped a lot - no Full GC has been executed during one day test.
However I feel those parameters are only a workaround and there should be a reason for that unexpected behavior - as I wrote we have never seen that despite deployed the application on many sites.
Some technical details follow:
uname: HP-UX XXX B.11.11 U 9000/800 3248519855 unlimited-user license
java -version: build 1.5.0.13-_09_may_2008_11_35
dmesg | tail:
Memory Information:
physical page size = 4096 bytes, logical page size = 4096 bytes
Physical: 8386560 Kbytes, lockable: 6446736 Kbytes, available: 7406260 Kbytes
Any help is really appreciated.