与OpenJDK相比,Oracle的商业Hotspot JVM具有哪些性能优势?



如以下问题所述:

OpenJDK vs Java HotspotVM

Oracle的商业Hotspot JVM本质上是OpenJDK,加上一些仅限商业客户端的功能。

但是 - 这些额外的功能是否真的有助于提高单台机器和/或小型集群的性能,仅使用消费者现成的硬件?还是它们仅与具有某些组织需求的大公司和具有定制硬件的大型系统相关?

我特别询问了"Java Flight Recorder,Application Class Data Sharing and Cooperative Memory Management",这是链接问题中提到的主要商业功能。

Java Flight Recorder和Application Class Data Sharing在此期间被开源,捐赠给OpenJDK项目。

甲骨文计划开源所有仅限商业的功能,或者在没有人使用它们时将其删除。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之间将没有功能差异。

最新更新