OpenJDK和Oracle之间在性能上有区别吗?

布莱德公园

Oracle最近决定开始对其JVM的商业使用进行收费。

我们的团队已经开始改用OpenJDK,并且发现一切似乎都可以正常工作,除了性能下降之外。

我们的服务器是linux服务器,根据我们的性能团队,

我们已经观察到大多数Java调用的速度非常慢。我们查看了日志并调查了一些调用,但没有发现任何异常或错误,只是缓慢。

是否有其他人有任何数据证明OpenJDK平均比Oracle JVM慢?

解答:对于我们来说,该问题已确定与haproxyUbuntu和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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Oracle JDK和OpenJDK之间的区别

c#seal和Java的final关键字之间在功能上有什么区别吗?

在数组上调用.length与保存size变量在性能上有区别吗?

while和for循环之间在计算上有区别吗?

在golang中,使用make与{}初始化的地图之间在性能上有什么区别

INT和VARCHAR主键之间在真实性能上有区别吗?

在Java中,Log和Log10在性能上有区别吗?

取反时,“ x = -x”和“ x * = -1”之间在功能上有区别吗?

在Ruby哈希上调用时,select和select!在性能上有区别吗?

简单的枚举应该衍生出Copy吗?性能上有什么区别吗?

PublicAPIAttribute和UsedImplicitlyAttribute之间在功能上有区别吗?

用于创建链接时,<a>和<button>之间在性能上有什么区别吗?

使用CTE,视图和子查询在性能上有什么不同吗?

-OutVariable和变量分配之间在功能上有区别吗?

list.pop()和deque.pop()-在性能上有区别吗?

使用ARRAY []和'{}':: int []创建数组之间在性能上有区别吗?

使用(4字节)`int`表示数字和4个元素的无符号char数组之间在性能上有什么区别吗?

销毁对象中的这些代码之间在功能上有什么区别吗?

在转换为原始类型或其包装程序类之间,在实际性能上有区别吗?

交换if / else条件时,性能上有区别吗?

迭代时zip和izip之间有什么功能上的区别吗?

对JSNI函数使用int或double时,在性能上有什么区别吗?

Python:`dist`和`sdist`之间在性能上有区别吗?

Database.SqlQuery和EF 6.1在性能上有什么区别吗?

调用局部变量和调用对象的实例变量之间在性能上有什么区别吗?

ping和ping6之间在性能上有区别吗?

这两个Angular控制器之间在功能上有什么区别吗

Pandas数据框:按列和行替换值在性能上有区别吗?

Django:.filter(key__in=set) 和 .filter(key__in=list) 在性能上有区别吗