Это действительно связано с HotSpot и значениями параметров по умолчанию ( Java HotSpot VM Options ), которые различаются в зависимости от конфигурации клиента и сервера.
Из главы 2 документа ( Архитектура движка производительности Java HotSpot ):
JDK включает в себя два варианта виртуальной машины - предложение на стороне клиента и виртуальную машину, настроенную для серверных приложений. Эти два решения совместно используют базу кода среды выполнения Java HotSpot, но используют разные компиляторы, которые соответствуют совершенно уникальным характеристикам производительности клиентов и серверов. Эти различия включают политику компиляции и значения по умолчанию для кучи.
Хотя виртуальные машины сервера и клиента похожи, виртуальная машина сервера была специально настроена для максимизации пиковой скорости работы. Он предназначен для выполнения долго работающих серверных приложений, которым требуется максимально высокая скорость работы, превышающая быстрое время запуска или меньший объем памяти во время выполнения.
Компилятор клиентской виртуальной машины служит обновлением как для классической виртуальной машины, так и для JIT-компиляторов, используемых в предыдущих версиях JDK. Клиентская виртуальная машина предлагает улучшенную производительность во время выполнения для приложений и апплетов. Клиентская виртуальная машина Java HotSpot была специально настроена для уменьшения времени запуска приложения и использования памяти, что делает его особенно подходящим для клиентских сред. В целом, клиентская система лучше для GUI.
Таким образом, реальная разница также на уровне компилятора:
Компилятор клиентской виртуальной машины не пытается выполнить многие из более сложных оптимизаций, выполняемых компилятором на виртуальной машине сервера, но в обмен на это требуется меньше времени для анализа и компиляции фрагмента кода. Это означает, что клиентская виртуальная машина может запускаться быстрее и требует меньшего объема памяти.
Виртуальная машина сервера содержит усовершенствованный адаптивный компилятор, который поддерживает многие из тех же типов оптимизации, которые выполняются путем оптимизации компиляторов C ++, а также некоторые оптимизации, которые не могут быть выполнены традиционными компиляторами, такие как агрессивное встраивание между вызовами виртуальных методов. Это конкурентное и эксплуатационное преимущество перед статическими компиляторами. Технология адаптивной оптимизации очень гибка в своем подходе и обычно превосходит даже передовые методы статического анализа и компиляции.
Примечание. В выпуске обновления 10 для jdk6 (см. Примечания к выпуску для обновления: Изменения в 1.6.0_10 ) была предпринята попытка улучшить время запуска, но по другой причине, нежели параметры горячей точки, поскольку она была упакована по-другому с гораздо меньшим ядром.
Г. Demecki указывает в комментариях , что в 64-разрядных версиях JDK, то -client
параметр игнорируется в течение многих лет.
Смотрите команду Windowsjava
:
-client
Выбирает клиентскую виртуальную машину Java HotSpot.
JDK с поддержкой 64-разрядных систем в настоящее время игнорирует эту опцию и вместо этого использует виртуальную машину Java Hotspot Server .