We've got an application that stores a large amount of data in-memory which is then used by a lot of users.
Subsequently we're seeing CPU usage go through the use, and every now and then hit 100% (on a 8 core machine with 32GB of mem) which I believe is when the JVM tries to garbage collect. The web app can't be used until JBoss is killed and restarted.
We currently have these JVM opts:
JAVA_OPTS="-Xms4096m -Xmx4096m -XX:MaxPermSize=512m -Djava.net.preferIPv4Stack=true -XX:+UseG1GC -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=50M -Xloggc:gc.log -XX:ReservedCodeCacheSize=384m -XX:+UseCodeCacheFlushing"
Any help would be much appreciated.