Oracle 的商用 Hotspot JVM 相比 OpenJDK 有哪些性能优势?
What performance benefits does Oracle's commercial Hotspot JVM have over OpenJDK?
如本题所述:
Oracle 的商业 Hotspot JVM 本质上是 OpenJDK,加上几个商业客户端专用的特性。
但是 - 这些额外的功能是否真的有助于单机 and/or 小型集群的性能,仅使用消费者现成的硬件?还是它们只与具有特定组织需求和具有定制硬件的大型系统的大公司相关?
我特别询问 "Java Flight Recorder, Application Class Data Sharing and Cooperative Memory Management" 在链接问题中提到的主要商业功能。
Java飞行记录器和应用程序Class数据共享同时开源,捐赠给OpenJDK项目。
Oracle 计划开源所有仅供商业使用的功能,或者如果没有人使用它们就将其删除。几周前,Mark Reinhold 在 JVM 语言峰会的这段视频中谈到了这一点 https://youtu.be/15s5xP5BRxk?t=10m25s。他说:
In order to create a level playing field we've open-sourced all of [Apllication Class-Data Sharing, Java Flight Recorder, Java Mission Control, ZGC], these are now all open source. There's some remaining tiny, tiny commercial features that we will either open-source or we will just remove from the commercial offering because, well, it turns out not many customers are actually using them any way.
引用 Oracle.com blog:
From Java 11 forward, therefore, Oracle JDK builds and OpenJDK builds will be essentially identical.
因此,如果这些商业功能中的任何一个带来了任何性能优势,您现在也可以通过使用 OpenJDK 获得该优势。
Java Flight Recorder 和 Mission Control 只是监控 JVM 的工具,不会直接影响其性能。它们可能会产生间接影响,因为您可以使用这些工具生成的信息来更有效地调整您的 JVM 设置。
协作内存管理旨在使 JVM 与同一台机器上的其他应用程序 运行 更好地协同工作。如果 OS 开始 运行 可用物理内存不足,JVM 可能会减少其资源利用率,例如缓存和堆 space,以减少整个系统的负载。这样做的最终结果可能是降低 JVM 性能。
应用程序 Class 数据共享旨在通过有效缓存 JVM 在加载时生成的 class 数据结构来提高给定应用程序启动 JVM 的速度 class是的。您为您的应用程序生成一个存档文件,然后在启动时由 JVM 映射到内存中,从而消除了大量的 JAR 文件读取。此映射文件还可以在多个 JVM(运行 同一个应用程序)之间共享,并减少每个 JVM 实例的占用空间。
如前所述,所有这些功能现已贡献给 OpenJDK 项目。从 JDK 11(下个月发布)开始,Oracle JDK 和直接从 OpenJDK 源代码构建的之间将没有功能差异。
如本题所述:
Oracle 的商业 Hotspot JVM 本质上是 OpenJDK,加上几个商业客户端专用的特性。
但是 - 这些额外的功能是否真的有助于单机 and/or 小型集群的性能,仅使用消费者现成的硬件?还是它们只与具有特定组织需求和具有定制硬件的大型系统的大公司相关?
我特别询问 "Java Flight Recorder, Application Class Data Sharing and Cooperative Memory Management" 在链接问题中提到的主要商业功能。
Java飞行记录器和应用程序Class数据共享同时开源,捐赠给OpenJDK项目。
Oracle 计划开源所有仅供商业使用的功能,或者如果没有人使用它们就将其删除。几周前,Mark Reinhold 在 JVM 语言峰会的这段视频中谈到了这一点 https://youtu.be/15s5xP5BRxk?t=10m25s。他说:
In order to create a level playing field we've open-sourced all of [Apllication Class-Data Sharing, Java Flight Recorder, Java Mission Control, ZGC], these are now all open source. There's some remaining tiny, tiny commercial features that we will either open-source or we will just remove from the commercial offering because, well, it turns out not many customers are actually using them any way.
引用 Oracle.com blog:
From Java 11 forward, therefore, Oracle JDK builds and OpenJDK builds will be essentially identical.
因此,如果这些商业功能中的任何一个带来了任何性能优势,您现在也可以通过使用 OpenJDK 获得该优势。
Java Flight Recorder 和 Mission Control 只是监控 JVM 的工具,不会直接影响其性能。它们可能会产生间接影响,因为您可以使用这些工具生成的信息来更有效地调整您的 JVM 设置。
协作内存管理旨在使 JVM 与同一台机器上的其他应用程序 运行 更好地协同工作。如果 OS 开始 运行 可用物理内存不足,JVM 可能会减少其资源利用率,例如缓存和堆 space,以减少整个系统的负载。这样做的最终结果可能是降低 JVM 性能。
应用程序 Class 数据共享旨在通过有效缓存 JVM 在加载时生成的 class 数据结构来提高给定应用程序启动 JVM 的速度 class是的。您为您的应用程序生成一个存档文件,然后在启动时由 JVM 映射到内存中,从而消除了大量的 JAR 文件读取。此映射文件还可以在多个 JVM(运行 同一个应用程序)之间共享,并减少每个 JVM 实例的占用空间。
如前所述,所有这些功能现已贡献给 OpenJDK 项目。从 JDK 11(下个月发布)开始,Oracle JDK 和直接从 OpenJDK 源代码构建的之间将没有功能差异。