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