Java 性能 64 位

标签 java jvm 64-bit windows-server-2008

我最近在 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/

相关文章:

java - RMI 和 JMX 套接字工厂

java - python neo4j jvm错误

Android adb 无法识别 Windows 7 64 位上的三星 Galaxy S (I9000)

c# - .net 1.1 是否支持 64 位操作系统?

windows - Fasm x64 消息框

java - Runtime.getRuntime().gc() 在 Java 8 中继续存在,有什么用处或者有什么区别吗?

java - 在 TicTacToe minimax 算法中实现 alpha beta 剪枝

java - 连接池中的数据库连接

java - 使用 JDK 7 编译的 scala 代码可以在 JVM 8 上运行吗?

java - 如果我们在年轻代上标记了所有死亡对象后就知道了它们,为什么我们需要在老一代中专门搜索无法访问的对象呢?