BT

State of Performance and Stability in Java 7 Update 1

by Fabian Lange on Nov 21, 2011 |

On October 18th, Oracle released Java 7 Update 1, bringing Java 7 much needed stability and fixing a performance optimization issue in which the HotSpot compiler could occasionally lead to incorrect results or could even SIGSEV crashes, as we previously reported. The same issue is fixed in JDK 6 with Update 29 where it occurred only when -XX:+AggressiveOpts or -XX:+OptimizeStringConcat were used, which is not recommended for production servers.

In its Java HotSpot Virtual Machine Performance Enhancements document, Oracle describes other performance related features. The rather short document contains only one new improvement: -XX:+TieredCompilation.

Tiered compilation adds an additional step to the previous mixed mode behaviour of the compiler. Server class JVMs prior to Java 7 initially run code in interpreted mode to collect statistics. Code was then only compiled and optimized when it was hot, like having a high execution count, which gave the HotSpot VM its name. The interpreted mode however is much slower than running compiled code. -XX:+TieredCompilation allows the JVM to gather statistics for optimization whilst already running compiled code.
The relevance of this improvement is probably not very high, as startup behaviour is still not as important as in desktop/applet based applications. Although this change might reduce warmup time in highly dynamics systems, where nodes come up in quick succession.

All the other improvements listed on the page for JVM 7 were already available in Java 6:

  • Compressed Oops available since Java 6 Update 14, default since Update 23 (64 bit only)
  • Escape Analysis available since Java 6 Update 14, default since Update 23
  • Non Uniform Memory Access Garbage Collection available since Java 6 Update 2

Compressed Oops save memory for 64 bit addresses. Instead of taking the 64 bit address from the operating system, the JVM will use a shorter address to reference the objects relative to the heap start. Most programs will significantly benefit from this feature due to reduced memory usage of object references.

Escape Analysis finds out if a newly allocated object will "escape" the current method scope. If it does not, then the object might be allocated on the method stack, and even synchronisation might be removed (lock elision). There is a comprehensive article by Heinz Kabutz on the effect of this optimization.

Non Uniform Memory Access Garbage Collection is an interesting improvement, but has been available for a long time. In modern memory architecture some areas are faster to read and write than others. Especially on multicore systems, there is memory which is reserved for the individual CPUs. Readers who are so inclined can learn more about these memory areas in an excellent article by Ulrich Drepper. The JVM will try to allocate objects in the memory used by the core where the allocating thread is executing. The performance improvement is claimed to be very high (especially on Solaris machines), but the -XX:+UseNUMA option never became default.

As most of the improvements were made available (and even default) in Java 6 Updates, there is still no compelling reason to update to Java 7 because of performance.

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Simplistic by Ismael Juma

Hi,

That is a simplistic analysis because the stability and performance of the various features are improved continuously in HotSpot. For example, Compressed Oops didn't perform particularly well in Java 6 Update 14 when compared to its performance in more recent releases. And Java 7 is not a static entity either. Java 7 update 2 (which should be out soon) will include a newer version of HotSpot with more improvements.

Best,
Ismael

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

1 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2014 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT