如本问题所述:
Oracle 的商业 Hotspot JVM 本质上是 OpenJDK,加上一些仅限商业客户端的功能。
但是 - 这些额外的功能实际上是否有助于仅使用消费者现成硬件的单台机器和/或小型集群的性能?或者它们仅与具有特定组织需求和具有定制硬件的大型系统的大公司相关?
我特别询问链接问题中提到的“Java Flight Recorder、应用程序类数据共享和协作内存管理”作为主要商业功能。
Java Flight Recorder和应用程序类数据共享已同时开源,捐赠给OpenJDK项目。
Oracle 计划开源所有仅供商业使用的功能,或者在没有人使用的情况下将其删除。 Mark Reinhold 在几周前 JVM 语言峰会的视频中谈到了这一点 https://youtu.be/15s5xP5BRxk?t=10m25s 。他说:
为了创造一个公平的竞争环境,我们开源了所有[应用程序类-数据共享、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 之间不会有功能差异。