OpenJDK против Java HotspotVM

являются ли OpenJDK VM и Oracle Hotspot VM все еще двумя разными JVMs?

Я не могу найти какой-либо официальной документации о чем-либо об OpenJDK VM. Даже на домашней странице OpenJDK есть группа HotSpot, которая разрабатывает HotSpot VM.

группа HotSpot состоит из разработчиков, участвующих в разработке, реализации и обслуживании виртуальной машины HotSpot

однако, если я проверю java-версию на своей машине Windows он выводит

Java HotSpot (TM) 64-разрядный сервер VM

но на моем Ubuntu VPS

OpenJDK 64-разрядный сервер VM

Если это две разные ЗИС, каковы основные различия между ними? У них разные наборы флагов времени выполнения?

1 ответов


Oracle HotSpot JVM основан на проекте OpenJDK HotSpot. Таким образом, они в основном те же VM, за исключением того, что Oracle JVM имеет несколько дополнительных коммерческих функций, в основном,Java Flight Recorder, Совместное Использование Данных Класса Приложений и совместное управление памятью.

флаги времени выполнения почти одинаковы для обеих виртуальных машин; см. Полный список с помощью

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