OpenJDK与Java HotspotVM

OpenJDK VM和Oracle Hotspot VM还有两种不同的JVM吗?

我似乎无法找到任何有关OpenJDK VM的官方文档。 即使在OpenJDK主页上也有一个开发HotSpot VM的HotSpot Group。

HotSpot组由参与HotSpot虚拟机的设计,实现和维护的开发人员组成

但是,如果我在我的Windows机器上检查java -version,它会打印出来

Java HotSpot(TM)64位服务器VM

但在我的Ubuntu VPS上

OpenJDK 64位服务器VM

如果这两个是不同的VM,它们之间的主要区别是什么? 他们有不同的运行时标志集吗?

Oracle HotSpot JVM基于OpenJDK HotSpot项目。 因此,它们大多是相同的VM,除了Oracle JVM还有一些额外的商业function,主要是Java Flight Recorder , Application Class Data Sharing和Cooperative Memory Management。

两个VM的运行时标志几乎相同; 使用完整列表

-XX:+UnlockDiagnosticVMOptions -XX:+UnlockCommercialFeatures -XX:+PrintFlagsFinal 

从JDK 8u131开始,唯一的区别在于以下标志(OpenJDK VM中没有):

  bool EnableResourceManagementTLABCache = true {product} bool EnableSharedLookupCache = true {product} bool FlightRecorder = false {commercial} ccstr FlightRecorderOptions = {product} bool LogCommercialFeatures = false {product} ccstr MemoryRestriction = none {commercial} bool ResourceManagement = false {commercial} intx ResourceManagementSampleInterval = -1 {commercial} ccstr StartFlightRecording = {commercial} bool TraceSharedLookupCache = false {product} bool UnlockCommercialFeatures := true {commercial} bool UseAppCDS = false {commercial} 
Interesting Posts