我最近在 Windows Server 2008 Enterprise 上迁移到 64 位操作系统。
看来我的 java 程序在 Windows 2003 上的运行速度明显低于 32 位。
真的会有任何反馈。
这是一个已知问题吗? 是否有特定的设置来提高性能?
(我知道迁移到 64 位会造成很小的性能损失,但我发现性能受到了显着影响)。
最佳答案
使用 64 位 JVM,您可能会看到不同的性能,但是在不同的机器上使用不同的操作系统,您会发现更多的差异。
如果您想查看使用 64 位引用是否会降低您的速度,您可以启用 -XX:+UseCompressedOops
这会导致 64 位 JVM 使用 32 位引用但仍然可以访问 32 Gb 内存。
另一种测试方法是在您的系统上使用 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/
关于Java 性能 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4934297/