I've created seam app, on Seam 2.0.1GA, richfaces,facelets, jsf 1.2, withoud ejb/jpa, just pure jdbc on tomcat 6.
My server has 4 GB ram, core 2 duo, centos OS.
Here is my tomcat conf.
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=64m -XX:MaxPermSize=128m" JAVA_OPTS="$JAVA_OPTS -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000" JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:-TraceClassUnloading -XX:+ClassUnloading -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:CompileThreshold=100" JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -verbose:gc -Xloggc:/home/grzegorz/jvm"
at now tomcat uses 2gb ram,
After 1 or 2 day, my swap get over 4-5gb and still grow until I get
java.lang.OutOfMemoryError: Java heap space
To check what is in jvm I've added logging jvm status to jvm.log fle
It seems GC after full GC cleans all data.
9031.181: [GC [PSYoungGen: 479984K->2320K(474176K)] 1875918K->1398822K (1872320K), 0.0114430 secs] 9031.193: [Full GC [PSYoungGen: 2320K->0K(474176K)] [PSOldGen: 1396501K->295482K(1398144K)] 1398822K->295482K(1872320K) [PSPermGen: 58204K->58204K(524288K)], 37.3468510 secs] 9071.531: [GC [PSYoungGen: 471808K->4192K(469952K)] 767290K->305865K (1868096K), 0.0277160 secs]
but my cheap is growing and growing etc...
After 3 days I must to restart my tomcat to clean swap and start app again.
I don't know why jvm.log file show me that Full GC cleand all memory, but swap is getting bigger and bigger until tomcat throw this error.
I've profiled my app by Yourkit Profiler, and it looks after logout, user session is completly cleaned, and If I force full gc in compiler all memory is cleaned too.
I use jvm 1.5.10 sdk, tomcat 6.
I thougth this swap can full fill my postmaster of postgres, but it is not.
Today after tomcat restart, my swap was cleand from 4,8gb to 1.01 gb. Ram in server top was cleaned to free 3.x gb, and tomcat at now works fine.
Can anybody help me what this could be, or how or where check anythink to find this leak.
I've no idea what to check else.