Minor GC Duration plateaus until Major GC
843811Feb 22 2005 — edited Feb 23 2005We recently pushed our web app to 1.5. Since then we've noticed unusual behaviour in minor garbage collection durations.
Our app uses a homebrew object store that requires large amounts of memory avail to the jvm. My problem is that when the app suddenly forces a large amount of memory into the old gen the minor GC's shoot up as well, and they only come back down to normal after a major GC. The frequency of minor GC's seem to be the same. Why is the size of the old generation impacting minor collection duration?
The normal minor gc duration is around 70ms but during these plateaus they will go as long as 8000ms (8 seconds!) per minor gc.
Here's our important config options:
-Xss1048576
-Xms1000M
-Xmx3000M
-Xmn300M
-XX:PermSize=64m
-XX:MaxPermSize=64m
-XX:MaxTenuringThreshold=6
-XX:SurvivorRatio=4
-XX:GCTimeRatio=14
-XX:MaxGCPauseMillis=200
-XX:+UseParNewGC
-XX:ParallelGCThreads=2
BTW - Yeah I know ParNewGC is almost equally as effective as the default when only using 2 cpus... (I wanted to try using MaxGCPauseMillis but that doesn't seem to help either) I also wanted to make sure it works since we are planning to move to 4 cpus soon.