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}