2017-06-02 90 views
6

OpenJDK VM和Oracle Hotspot VM仍然是兩個不同的JVM嗎?OpenJDK vs Java HotspotVM

我似乎無法找到任何有關OpenJDK VM的官方文檔。即使在OpenJDK主頁中也有一個開發HotSpot VM的HotSpot Group。

熱點組是由參與設計,實施開發和HotSpot虛擬機的保養的

但是如果我檢查我的Windows機器上的Java的版本它打印出

的HotSpot的Java(TM)64位服務器VM

但在我的Ubuntu VPS

OpenJDK的64位服務器VM

如果這是兩個不同的虛擬機是什麼它們之間的主要區別是什麼?他們有不同的運行時標誌集?

+1

的可能的複製( https://stackoverflow.com/questions/16568253/difference-between-jvm-and-hotspot) – Dmitriy

+1

這個問題在2014年得到了回答。 最新的答案是從2015年開始,它指向所有JVM實現的維基百科列表。在wikipedia中,它表示OpenJDK(JDK)包含HotSpot虛擬機。但我正在尋找有些官方文件或文章或除維基百科之外的任何內容。 – ataurenis

+2

Openjdk是Java的開源基礎。 Oracle Java被openjdk更名爲更多功能。 –

回答

4

Oracle HotSpot JVM基於OpenJDK HotSpot項目。所以,他們大多是相同的虛擬機,除了Oracle JVM有一些額外的商業功能,主要是,Java Flight Recorder,Application Class Data Sharing和合作內存管理。

兩個VM的運行時標誌幾乎相同;看到使用的完整列表

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

從JDK 8u131的,唯一不同的是在下面的標誌(在OpenJDK的VM缺席):[?JVM和熱點之間的不同]

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} 
+1

如果你在談論商業功能和打印標誌不會添加make unlockcommercialfeatures有意義嗎? – the8472

+0

@ the8472好點。謝謝。 – apangin