Почему Java, работающая в режиме -server, говорит, что версия смешанная?

Почему Java, работающая в режиме -server, говорит, что версия «смешанный режим»? Когда я это вижу, значит ли это, что JVM действительно не загружалась в режиме чистого сервера?


person djangofan    schedule 03.02.2011    source источник
comment
Вы также можете прочитать это: stackoverflow.com/questions/198577/   -  person biziclop    schedule 03.02.2011


Ответы (2)


режим сервера не означает "не смешанный". Это разные настройки.

Смешанный означает, что JVM будет смешивать скомпилированный и интерпретируемый код. При желании вы можете переключиться в полностью интерпретируемый режим с помощью переключателя -Xint (обычно вы не хотите этого делать).

Режим сервера означает, что компилятор горячей точки будет работать с настройками сервера. Общее предположение состоит в том, что виртуальные машины в режиме сервера работают долго, поэтому оптимизация будет выполняться с учетом этого.

Поэтому, если вы видите смешанный режим, это не признак того, что ваша виртуальная машина не работает в режиме сервера.

РЕДАКТИРОВАТЬ: Если вы хотите проверить, что действительно работает, попробуйте вывод

System.out.println(System.getProperty("java.vm.name"));
System.out.println(System.getProperty("java.vm.info"));

По крайней мере, для Sun VM или OpenJDK это даст вам подсказку. Вы могли заметить, что вы всегда будете запускать виртуальную машину сервера, если вы работаете в 64-битной системе.

person Boris    schedule 03.02.2011
comment
-Xcomp только для скопированных. А ты не хочешь этого делать. / Между прочим, у Server HotSpot есть собственный интерпретатор (он принимает информацию о профилировании, что делает его немного медленнее, чем стандартный интерпретатор). - person Tom Hawtin - tackline; 04.02.2011

Виртуальная машина Hotspot

И клиентский, и серверный компиляторы Hotspot включены в среду выполнения Java.

По умолчанию клиентский компилятор включен, но для интенсивных серверных приложений вы можете запустить серверный компилятор с параметром времени выполнения -server. Виртуальная машина Hotspot обычно работает в смешанном режиме, как видно из выходных данных -version. Смешанный режим означает, что Hotspot динамически компилирует байт-коды Java в машинный код при соблюдении ряда критериев, включая количество запусков метода через интерпретатор. Смешанный режим выполнения обычно обеспечивает наилучшую производительность.

person ayush    schedule 03.02.2011
comment
Фактически это говорит о том, что параметр -server отключает смешанный режим. Статья 2000 года, так что, возможно, она тоже не совсем точна. - person extraneon; 03.02.2011
comment
смешанный режим не обязательно указывает на режим сервера. - person Sajuuk; 14.05.2019