System Details:
- Red Hat Enterprise Linux 6.3
- Sun Java JDK 1.6.0_38
- Apache Tomcat 7.0.34
- VMWare Environment
Me: Medium Experienced Linux Admin, Trial By Fire Java/Tomcat Admin, almost no understand of Java programming/code.
The environmental variables I've set are the results of months of digging through stackoverflow posts, oracle docs, and 300 or so other web posts, much of it with conflicting information or details about a different version of java VM.
Problem Sometimes, Tenured Generation (also called Old) is not emptying/garbage collecting. This causes slow performance for our end users. Initiating a Garbage Collection from Visual VM sometimes resolves the issue, but not often. I am usually able to take a heap dump, but unfortunately I don't know what I'm looking for. What information should I be looking for? I'm sure there are problems with the code, but "fixing the code" is not an immediate option. If it's as simple as throwing more memory/money at it, I'll do that, but I'd like Java to just empty the darn trash. If more details are needed, I'm happy to provide them, I may have to censor some content as there is 'some' private information.
setenv.sh contents
export JAVA_HOME="/usr/java/jdk1.6.0_38"
export CATALINA_OPTS="$CATALINA_OPTS -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails"
export CATALINA_OPTS="$CATALINA_OPTS -Xms512m -Xmx512m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+CMSClassUnloadingEnabled"
export CATALINA_OPTS="$CATALINA_OPTS -XX:CMSInitiatingOccupancyFraction=75"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
export CATALINA_OPTS="$CATALINA_OPTS -server"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=8008"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.password.file=/home/otrack/tomcat7/conf/management.jmxremote.password"
export CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=10.47.10.113"
export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"