I have a server that processes a large number of requests (about 4000 requests/sec). It creates a lot of short lived objects in a short period of time. I used CMS garbage collector with the following parameters:
-server -Xms4g -Xmx4g -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=70
I am running JDK6 on Linux:
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) 64-Bit Server VM (build 11.0-b15, mixed mode)
Linux usc101 2.6.24-etchnhalf.1-amd64 #1 SMP Tue Oct 14 03:11:45 UTC 2008 x86_64 GNU/Linux
The GC throughput is 99.57% and GC collects 8.5G/sec. Over time, both the ParNew and the CMS GC frequencies rise while my test load is steady. In a period of 15 hours, minor GC (ParNew) increases from once every 40 seconds to every 15 seconds; full GC (CMS) increases from once every hour to once every 15 minutes. After full/CMS GCs, the memory always resets back to the same level. As the GC frequency increases, I noticed that my CPU usage also increases from 5% to 20% and my response time increases.
Has anyone seen this type of behavior with CMS? What could cause the GC frequencies to increase?
Message was edited by: shulei