gpt4 book ai didi

Java 7 JVM 比 JRockit 6 慢?

转载 作者:搜寻专家 更新时间:2023-11-01 01:08:33 25 4
gpt4 key购买 nike

我对升级到 Java 7 非常感兴趣(出于我自己自私的编码原因)。但是,我们的用户对延迟非常敏感(一切都需要亚毫秒)。我在 3 个不同的 JVM 之间做了一个简单的性能比较测试,发现 Java 7 慢得多。测试通过我们的应用程序推送了一些简单的消息。此测试是低负载、负载量测试,每隔几秒推送一条消息。结果是(以微秒为单位):

 - Hotspot 6 (build 24): msgs= 23 avg= 902 
- JRockit 6 (R28 b 29): msgs= 23 avg= 481
- Hotspot 7 (build 04): msgs= 34 avg=1130

Oracle 的策略是从 Java 7 开始合并 JRockit 和 Hotspot(因此 JRockit 6 是最后一个可用的)。有谁知道为什么性能会差这么多? (需要注意的一点是,代码是在 Java 1.6 下编译的。不确定是否可以解释它...)

更新:我投票结束了我自己的问题,因为我可以从评论中看出我无法真正传达足够的信息来使这个问题成为一个建设性的问题。感谢所有发表评论的人。

更新:在获得更多反馈后,我想我会提供更多信息。测试总是在重新开始之后。 每个测试的所有因素都相等。唯一改变的是 JVM。多次重复测试给出一致的结果。在任何测试迭代中都没有发生 GC。

下面是其中一个测试运行的图表值。对于 JRockit 和 Hotspot 7,第一个延迟值都被丢弃了。 JRockit 具有巨大的初始值,但随后会非常快速地优化并趋于均值。 Hotspot 7 需要更长的时间来优化,并且从未下降到像 JRockit 这样低的平均值。每个数据点代表从 TCP/IP 套接字读取消息、运行业务逻辑并在另一个套接字上写入消息的微秒。每条消息都是相同的,并且没有为任何消息输入新的代码路径。

JRockit 6 vs. Hotspot 7

最佳答案

JRockit 是它自己的(纯 C)代码库,不同于 OpenJDK。它包含不同的垃圾收集器和完全不同的 JIT 编译器。 BEA 拥有的一个重要获利工具是低延迟 GC,它非常先进,即使在非商业变体中也是如此。在 JRockit 上花费了大量时间作为无尘室虚拟机实现。正如评论中所说的那样,在 HotSpot 代码库中重新实现东西并不是合并的问题。这远不是一个快速的过程,有些东西根本不会到达那里,至少不会以它们的 JRockit 形式出现。可以这么说,如果没有在边缘进行一些锉削,拼图 block 就不容易放入。 JDK7 Hotspot,将擅长其他事情,或者类似系统的不同版本,但是这可能会弥补你失去的一些性能。其他应用程序可能比 JRockit 6 运行得更快。

如果您有兴趣了解有关 JRockit(或任何 JVM)内部结构的更多信息,强烈推荐阅读“Oracle JRockit 权威指南”一书。完全披露,我可能会从每份副本中获得约 2 美元的税前版税,并将用它来购买浓缩咖啡。 :)

关于Java 7 JVM 比 JRockit 6 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10903981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com