Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

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

EDIT: если вы хотите проверить, что действительно работает, попробуйте выполнить вывод

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

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

Ответ 2

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

Оба компилятора клиента и сервера Hotspot включены в среду выполнения Java.

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