We are using sun JVM under Tibco Active Matrix Service Grid's OSGI container. We are observing a strange behaviour where JVM is doing full/partial GCs continuously without freeing up much memory. Old generation is getting filled up and the young generation is almost empty. We have a web service deployed on this JVM. All the requests to the service are stateless so all the objects created are short lived and should be immedietely available for GC. Please see below the heap size and the GC arguments which we are using.
# Increase the default maximum heap size.
-server -XX:PermSize=128m -XX:MaxPermSize=256m -Xloggc:gc.log -verbosegc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseParallelGC -XX:+MaxGCPauseMillis=100 -XX:GCTimeRatio=5 -XX:+UseTLAB -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/home/tibcoadm/heapdump.log
We need to know why continuous full GC is not able to free up any memory in old generation ?