Improving the performance of JDeveloper11g (part 2) and JVMs in general
- by asantaga
Just received an email from one of our JVM developers who read my blog entry on Performance tuning JDeveloper11g and he's confirmed that all of the above parameters are totally supported :-) He's also provided a description of the parameters so we can learn what magic is actually being applied.
- -XX:+AggressiveOpts -- this enables the latest and
greatest JVM optimizations. It will
likely help most Java applications. It's fully supported. The downside of it is
that because it has the latest and greatest optimizations, there is some small
probability that it may not offer as good of an experience. As those features enabled with this command line option have "matured", they are
made the default in a future JDK release. So, you can think of this command line option as the place where the
newest optimizations get introduced. Some time later they are moved out from under AggressiveOpts to become
default behavior.
-XX:+OptimizeStringConcat
-- only works with the -server
JVM. It may be enabled by the default
in a future JDK 7 update release. This
option delays the construction of a StringBuilder/StringBuffer and attempts to
avoid re-sizing the underlying char[] by attempting to detect the size of the
char[] to allocate based on what's being appended to the
StringBuilder/StringBuffer.
-XX:+UseStringCache
-- I would not suggest using this
unless you knew that JDeveloper allocated the same string over and over
again. And, the string that's allocated
over and over again is one of the first 100,000 allocated strings. In short, I'd recommend against using
it. And, in fact, in Java 7 (currently)
does not include this feature.
-XX:+UseCompressedOops
-- applicable to 64-bit JVMs. And, if you're using a 64-bit JVM, I'd
suggest you use it. It's auto enabled in
JDK 7 64-bit JVMs and later JDK 6 64-bit JVMs enable it by default too.
-XX:+UseGCOverheadLimit
-- by default this option is
already enabled.
One other command line option to consider is
-XX:+TieredCompilation for a JDK 6 Update 25 or later, or JDK 7. This gives you the startup of a -client JVM
and the peak performance of a -server JVM.
Awesome-ness!
Finally, Charlies also pointed out to me a "new" book he's just published where he goes into the details of JVM tuning, a must for all Fusion Middleware tuning exercises..
(click the book)
Thanks Charlie!