我最近在Windows Server 2008 Enterprise上迁移到了64位操作系统。
似乎我的java程序在Windows 2003上的运行速度明显慢于32位。
真的会有任何反馈。
这是一个已知问题吗? 是否有特定设置来提高性能?
(我知道移动到64位会有很小的性能损失,但我看到了显着的性能损失。)
答案 0 :(得分:7)
使用64位JVM,您可能会看到不同的性能,但是在不同的计算机上使用不同的操作系统会看到更多的差异。
如果要查看使用64位引用是否会降低速度,可以启用-XX:+UseCompressedOops
,这会导致64位JVM使用32位引用,但仍可以访问32 Gb内存。 / p>
另一种测试方法是在系统上使用32位JVM。 ;)
我们有一个对延迟敏感的系统,并且在64位JVM上使用32位引用时看到的性能优势很小,因为它将每个地址移位3位。 32位JVM较小的寄存器集对我们的伤害超过它的帮助。
编辑:了解更多详情
http://wikis.sun.com/display/HotSpotInternals/CompressedOops
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html
http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/
答案 1 :(得分:3)
是的,请查看Hotspot FAQ。
8字节指针会增加代码和数据大小并减慢所有内容。如果您正在寻找性能并且不需要大堆,请尝试使用32位Java VM。