Monday, September 27, 2010

-XX:+UseCompressedOops

The September Denver JUG was one of the better ones with two
presentations by Venkat Subramaniam. I went to one of his
presentations at No Fluff Just Stuff maybe in 2007 about OSGi
and he didn't make much of an impression on me, but in this
case I found him to be very energetic and witty, even doing
back to back presentations.

The first one was about Java 7. Java 7 will have a feature to
enhance performance called Compressed Oops, and in fact
this feature is also available in recent Java 6 implementations
through the use of a command line argument,
-XX:+UseCompressedOops. Compressed Oops is intended to
reduce the memory usage of your 64 bit JVM by encoding some
64 bit pointers into 32 bits.

I work on a couple of x86-64 workstations with 64 bit Ubuntu
(Linux) so I thought I'd give this a try.

Well, it seems slightly unstable. After adding
-XX:+UseCompressedOops into the vmargs of Eclipse, I
observed Eclipse intermittently either fail to start or
occasionally crash. This was a really borderline effect that
occurred maybe 3 or 4 times in a week, but when I removed the
-XX:+UseCompressedOops argument the symptoms stopped.