Important Oracle Java Virtual Machine Information.

Dec 26, 2014

At a recent Adobe Summit in Las Vegas; where it was great to meet with good friends again, I spoke on a beneficial set of JVM arguments for 64-bit environments which I evolved over a good number of years of tuning and testing the Sun then Oracle Java Virtual Machine (JVM).  I was surprised in the level of interest in the whole subject of JVM tuning after all the years I have been talking about it almost 14 years now.  In order to address some of the questions I was asked I thought it good to put some information together here; as follows.

Firstly those JVM argument settings, these are in addition to Xms Xmx and Permanent Generation memory settings.  Also please note that we changed the Garbage Collector to Concurrent Mark Sweep (CMS).

-XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops -Xss256k -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=68

One question I was asked here is if we garbage collection logging on for the JVM is there any way to rotate those logs and here is the answer to that...

-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=256k -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -verbose:gc -Xloggc:cfwhispererGC.log

I also found two very good resources with a list of JVM arguments as follows, firstly the Oracle 1.7 and previous JVM's

Next the new 1.8 JVM.

Lastly, I see in the new 1.8 JVM there is no Permanent Generation; more information on that soon.

 

 

 

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-58163826-1', 'auto');
  ga('send', 'pageview');

</script>

About Mike Brunt

Mike has been working since 2001 on all things Java server-side. This includes, troubleshooting, tuning and infrastructure design, engineering and migration. More ...

Categories

Monthly Archives

Favorite Links

Tag Cloud

java jvm java containers capacity planning load testing internet of things android

Feeds