Posted by manishaga
on July 10, 2010 at 9:04 AM PDT
While doing load tests, I see my application show behaviour of a memory leak. It hits the heap 3 GB and after that GC seems to recover very little memory with every run, and it gets lesser and lesser with subsequent runs.
This is JDK 1.6 and and the app runs on Tomcat.
Here's relevant JVM args:
-Xms4g -Xmx4g -XX:ThreadStackSize=256 -Xmn512m -Djava.net.preferIPv4Stack=true -XX:SurvivorRatio=3 -XX:MaxTenuringThreshold=31 -XX:TargetSurvivorRatio=90 -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+HeapDumpOnOutOfMemoryError
Also, I notice that only ParNew runs, ConcurrentMarkSweep doesn't run. It only runs when I force it using JConsole.