繁体   English   中英

与OpenJDK相比,Oracle商业Hotspot JVM具有什么性能优势?

[英]What performance benefits does Oracle's commercial Hotspot JVM have over OpenJDK?

如本问题所述:

OpenJDK与Java HotspotVM

Oracle的商业Hotspot JVM本质上是OpenJDK,还有几个仅用于商业客户端的功能。

但是-仅使用现成的硬件,这些额外的功能是否真的有助于单机和/或小型集群上的性能? 还是仅与具有特定组织需求的大公司以及具有自定义硬件的大型系统有关?

我特别想问的是“ Java Flight Recorder,应用程序类数据共享和协作内存管理”,这是链接到问题中的主要商业功能。

同时,Java Flight Recorder和应用程序类数据共享已开源,捐赠给OpenJDK项目。

Oracle计划开源所有仅商业用途的功能,或者如果没有人使用它们,则将其删除。 马克·赖因霍尔德(Mark Reinhold)在几周前的JVM语言峰会的视频中谈到了这一点, 网址为https://youtu.be/15s5xP5BRxk?t=10m25s 他说:

为了创建一个公平的竞争环境,我们已经开源了[Apllication Class-Data Sharing,Java Flight Recorder,Java Mission Control,ZGC],这些现在都是开源的。 还有一些微小的商业功能,我们要么开源,要么就从商业产品中删除,因为事实证明,实际上并没有多少客户以任何方式使用它们。

引用Oracle.com博客

因此,从Java 11开始, Oracle JDK构建和OpenJDK构建将基本相同。

因此,如果这些商业功能中的任何一项带来了性能上的好处,您现在也可以通过使用OpenJDK来获得这种好处。

Java Flight Recorder和Mission Control只是监视JVM的工具,因此不会直接影响其性能。 它们可能会产生间接影响,因为您可以使用这些工具生成的信息来更有效地调整JVM设置。

协作内存管理旨在使JVM与运行在同一计算机上的其他应用程序更好地协作。 如果操作系统开始在可用物理内存上运行不足,则JVM可能会减少其资源利用率,例如缓存和堆空间,以减少整个系统的负载。 这样做的最终结果可能是降低JVM性能。

应用程序类数据共享旨在通过有效地缓存JVM在加载类时生成的类数据结构来提高给定应用程序启动JVM的速度。 您为应用程序生成了一个存档文件,然后在启动时由JVM映射到内存中,从而消除了读取大量JAR文件的麻烦。 该映射文件还可以在多个JVM之间(运行同一应用程序)共享,并减少每个JVM实例的占用空间。

如前所述,所有这些功能现在都已贡献给OpenJDK项目。 从JDK 11(下个月发布)开始,Oracle JDK与直接从OpenJDK源代码构建的JDK之间在功能上没有任何区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM