Oracle最近决定开始对其JVM的商业使用进行收费。
我们的团队已经开始改用OpenJDK,并且发现一切似乎都可以正常工作,除了性能下降之外。
我们的服务器是linux服务器,根据我们的性能团队,
我们已经观察到大多数Java调用的速度非常慢。我们查看了日志并调查了一些调用,但没有发现任何异常或错误,只是缓慢。
是否有其他人有任何数据证明OpenJDK平均比Oracle JVM慢?
解答:对于我们来说,该问题已确定与haproxy
Ubuntu和OpenJDK有关。如果将这三件事结合起来,我们将在每个套接字连接上看到额外的5毫秒延迟。更改这三个因素中的任何一个,即可恢复性能。
我还将其作为答案发布,因此可以在两个地方发现它
您会从Oracle博客文章中找到有趣的摘录:
问:在OpenJDK存储库中找到的源代码与用于构建Oracle JDK的代码有什么区别?
答:非常接近-我们针对Oracle JDK的构建过程是在OpenJDK 7上构建的,仅添加了几段内容,例如部署代码,其中包括Oracle对Java Plugin和Java WebStart的实现,以及一些封闭源代码。第三方组件,例如图形光栅化程序,一些开源第三方组件,例如Rhino,以及一些零散的地方,例如其他文档或第三方字体。展望未来,我们的意图是将Oracle JDK的所有部分开源,但那些我们认为具有商业功能的部分(例如JRockit Mission Control(Oracle JDK中尚不可用)),并用开源替代品替代受累的第三方组件,以实现更紧密的比价在代码库之间。
由于Oracle负责创建两者,因此很显然,它将确保其客户有充分的付款理由,而性能是显而易见的手段。
我相信OpenJDK是仅解释器的JVM。这很容易移植,因为它没有特定于体系结构的汇编代码,但是不幸的是,它的性能较差。
我认为OracleJDK利用了平台的浮点ABI(RP1上的Soft Float和RP2上的Hard Float)。它还可能具有一些特定于平台的代码,以使其速度更快。
一个JIT(刚刚在时间)的编译器曾一度被包含在这两个,一个名为鲨鱼,但我不知道,如果它被包含在OpenJDK的。Wikipedia OpenJDK没有提到JIT,我确实发现了这个古老而令人困扰的问题,删除了Shark编译器。但是,Wikipedia Java版本历史记录确实包含JIT。
如果OracleJDK现在包括特定于平台的JIT编译器,而OpenJDK没有,则可以很好地解释性能的差异,
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句