Improving 64-bit Java performance using Compressed References

In industry sectors such as telecommunications and finance, there is a move towards 64-bit hardware driven by increasing memory requirements of applications. However, many applications experience reduced performance when run on 64-bit hardware relative to 32-bit. This is in large part due to increased cache misses caused by larger data sizes on 64-bit. The problem is exacerbated in Java, which is very pointer intensive, and affects both application execution as well as JVM facilities such as garbage collection. The goal is to build a relatively seamless transition in terms of performance and footprint when an application is migrated to 64-bit hardware from 32-bit hardware. On 64-bit platforms, the IBM JDK for Java6 offers a mode known as Compressed References, which reduces the object heap references from 64 bits to 32 bits in width. This feature cuts the associated memory storage costs in half, while being completely transparent to the application and requires no rewrites or prior knowledge. The technology is tiered, such that support exists for up to 4GB sized heaps with best performance, and up to 32GB sized heaps with good performance, transitioning back to standard 64-bit object references at heap sizes beyond 32GB. Using this approach, relative to 32-bit platforms, 64-bit WebSphere DayTrader performance is within 5% and footprint is within 1% on Intel Windows/Linux and AIX.
Greg Steffan
Last modified: Tue Aug 26 09:59:59 EDT 2008