使用d64开关可使JVM进入64位模式。从技术上讲,在Solaris / Linux和大多数Unix上,JVM进程将以LP64模型执行。
该LP64模型是从32位模型(ILP32)中的指针碰巧是64位宽的,而不是32位指针的不同。对于JVM,这允许更大的内存可寻址性,但这也意味着仅对象引用所占用的大小增加了一倍。因此,在给定的时间,在32位JVM和64位JVM中,相同数量的对象会有更大的膨胀。
经常被忘记的另一件事是指令本身的大小。在64位JVM上,指令的大小将占用本机寄存器的大小。
但是,如果您在64位环境中使用压缩对象指针,则对于堆大小大于4
GB的情况,JVM将尽可能对指针进行编码和解码。简而言之,当您使用压缩指针时,JVM会尝试尽可能多地使用32位宽的值。
提示:使用 -XX:+ UseCompressedOops
来打开UseCompressedOops标志,以消除某些膨胀。YMMV,但是人们报告说使用压缩的oops可使内存膨胀减少多达50%。
编辑
Java HotSpot VM的14.0版支持UseCompressedOops标志,可从Java 6 Update
14开始使用。



