Inside AMD Java Labs
January 22, 2009
In December, I attended a NY Java SIG meeting (javasig.com), which is run by Frank Greco. The topic was AMD's Java labs, and all the work they're doing with Sun and other vendors to improve Java's performance on servers with AMD processors. The speaker was AMD's Ben Pollan, who now resides in Texas but is a native New Yorker.
Ben discussed the optimizations and tools that AMD has contributed to Java over the years. These include:
-Hashmap performance improvements
-Class size reduction for large class objects
-Automatic field reordering and deletion
-Optimizations to help when running multiple JVMs on one server, such as node interleaved memory
-JVMTI improvements to provide more robust profiling data and tools support
Inside AMD processors, there have been design considerations specifically for Java, such as:
-Instruction selection and conversion optimizations
-Cache improvements specifically to help java.util.* collection classes
-Instruction-based sampling, where the processor associates events with instructions, and helps the JIT reoptimize compiled code.
Other areas of improvement, inside and outside of the JVM, include:
-Advanced synchronization facility, with lightweight locking
-Compressed references (using less than 64bits for object references to improve performance)
-Enhancements for NUMA-based servers, such as the addition of the -XX:+UseNUMA command-line flag
Ben discussed AMD's work with a tool called CodeSleuth. CodeSleuth is an open source Eclipse plug-in that brings the functionality of AMD CodeAnalyst to Java code. It collects and analyzes compiled Java code directly from within Eclipse. It points out the locations of performance issues in your Java source so you can modify the code and improve performance.
AMD is also a big contributor to OpenJDK, in particular adding code to JDK 7 to automatically improve Java's performance on multi-core machines. For more information on the work AMD is doing in the Java space, go to:
To download and try CodeSleuth with your Java applications, go to: