如该问题所述:
Oracle的商业Hotspot JVM本质上是OpenJDK,还有一些仅用于商业客户端的功能。
但是-这些额外的功能实际上是否仅在使用现成的硬件的情况下有助于提高单机和/或小型集群的性能?还是只与具有特定组织需求的大公司以及具有自定义硬件的大型系统有关?
我要特别问的是“ Java Flight Recorder,应用程序类数据共享和协作内存管理”是链接到的问题中的主要商业功能。
答案 0 :(得分:4)
与此同时,Java Flight Recorder和应用程序类数据共享已开源,并捐赠给了OpenJDK项目。
Oracle计划开放所有商业专用功能的源代码,或者如果没有人使用它们,则将其删除。马克·赖因霍尔德(Mark Reinhold)在几周前https://youtu.be/15s5xP5BRxk?t=10m25s的JVM语言峰会上的这段视频中谈到了这一点。他说:
为了创建一个公平的竞争环境,我们开放了[Apllication Class-Data Sharing,Java Flight Recorder,Java Mission Control,ZGC]的所有资源,现在这些都是开源的。还有一些微小的商业功能,我们要么将其开源,要么将其从商业产品中删除,因为事实证明,实际上并没有多少客户以任何方式使用它们。
因此,从Java 11开始, Oracle JDK 构建和 OpenJDK 构建将基本相同。
因此,如果这些商业功能中的任何一项带来了性能上的好处,您现在也可以通过使用OpenJDK来获得这种好处。
答案 1 :(得分:2)
Java Flight Recorder和Mission Control只是监视JVM的工具,因此不会直接影响其性能。它们可能会产生间接影响,因为您可以使用这些工具生成的信息来更有效地调整JVM设置。
协作内存管理旨在使JVM与运行在同一台计算机上的其他应用程序更好地协作。如果操作系统开始在可用物理内存上运行不足,则JVM可能会减少其资源利用率,例如缓存和堆空间,以减少整个系统的负载。这样做的最终结果可能是降低JVM性能。
应用程序类数据共享旨在通过有效地缓存JVM在加载类时生成的类数据结构,来提高使用给定应用程序启动JVM的速度。您为应用程序生成了一个存档文件,然后在启动时由JVM映射到内存中,从而消除了许多JAR文件的读取。此映射文件还可以在多个JVM(运行同一应用程序)之间共享,并减少每个JVM实例的占用空间。
如前所述,所有这些功能现在都已被贡献给OpenJDK项目。从JDK 11(下个月发布)开始,Oracle JDK与直接从OpenJDK源代码构建的JDK之间在功能上没有任何区别。