Java程序运行在64位机器上会付出比较大的代价:
1,内存问题
1)内存寻址范围较32位扩大了1倍,也就是指针膨胀;
2)数据类型在64位中存储需要对齐补白;
以上两个原因,导致64位较32位需要消耗更多的内存,通常增加10-30%;
2,64位jvm的运行速度的各项测试几乎全面落后于32位,性能差距15%左右;
可以选择32位集群的方式来部署。
在JDK1.6 Update14之后,sun提供了指针压缩功能(-XX:+ UseCompressedOops),执行代码时动态植入压缩指令以节省内存消耗,但同时会增加执行的代码数量,所有的heap(堆)里的、指向heap内对象的指针都会被压缩。