Posted by hunterp
on April 30, 2007 at 4:53 PM PDT
I have an app and GC is killing me. everything is fine until the memory reaches the heap then gc takes forever (while still applying load) and the app is completely unresponsive (up to 2 minute wait times).
I thought the time ratio combined with incremental would collect more aggressively (i have lots of free cpu). But with the parameters below, for a 4 minute run, the jvm spent well under a minute GC before it hit the wall and blew up. FYI the PSOldGen space is where 75% of the garbage stays until the wall. I've tried the -XX:MinHeapFreeRatio=30 (instead of default
40) but no difference.
Adding memory only prolongs the onset of the "wall". So my goal is to get the JVM to collect more of the OldGen to try and make the wall as distant as possible.
Here are the OPTS
-Xmx2G -Xms2G -Xmn500M -XX:GCTimeRatio=1 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:CMSIncrementalSafetyFactor=50 -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0 -XX:CMSIncrementalDutyCycle=10 -XX:MaxPermSize=256m -Xss128k