Разница между режимом клиента JVM и режимом сервера
Основное различие между режимом сервера JVM и режимом клиента состоит в том, что при запуске: - режим сервера медленно при запуске, но как только он запускается, производительность будет значительно улучшена.
JVM может значительно повысить производительность при работе в режиме сервера. Скорость запуска приложений в режиме сервера будет примерно на 10% медленнее, чем в режиме клиента, но скорость выполнения не менее чем в 10 раз быстрее, чем клиентская виртуальная машина.
Когда параметры режима работы не указаны, виртуальная машина начинает обнаруживать, является ли хост сервером. Если это так, он начнется в режиме сервера. В противном случае он начнется в режиме клиента. Основа для обнаружения J2SE5.0 составляет не менее 2 процессоров и минимум 2 ГБ памяти.
Поскольку ЦП сервера, память и жесткий диск сильнее, чем клиентский компьютер, после развертывания программы его следует запустить в режиме сервера, чтобы получить лучшую производительность;
JVM по умолчанию на -XMS составляет 1 м, -xmx -64 м в клиентском режиме; JVM по умолчанию на -XMS составляет 128 м, -xmx -1024 м в режиме сервера;
Сервер: медленный запуск и более полная компиляция. Компилятор является адаптивным компилятором с высокой эффективностью и предназначен для оптимизации серверных приложений и максимизации скорости выполнения программы в среде сервера.
Клиент: быстрый запуск, низкое использование памяти, быстрое компиляция, оптимизированный для настольных приложений, оптимизированный для сокращения времени запуска в среде клиента;
Когда JVM используется для запуска интерактивных приложений интерфейса GUI, рекомендуется использовать режим клиента, когда JVM используется для запуска фоновой программы сервера.
Мы можем проверить, какой режим JVM работает, работая: Java -version.
О GCC на рисунке 1
В режиме клиента новое поколение выбирает серийный GC, в то время как старое поколение выбирает серийный GC, а старое поколение выбирает серийный GC
В режиме сервера новое поколение выбирает параллельную переработку GC, в то время как старое поколение выбирает параллельный GC.
Вообще говоря, есть два способа выбора нашего системного приложения: приоритет пропускной способности и приоритет времени паузы. Для приоритета пропускной способности принят параллельный метод GC по умолчанию сервера, и для приоритета времени паузы используется метод параллельного GC (CMS).
Другие расширенные знания
JDK имеет два типа приложений VM, VM Client и VM Server. Два решения совместно используют базу кода горячей точки среды выполнения Java, но используют различные компиляторы, уникальные функции производительности для клиентов и серверов, с различиями, включая написание встроенных политик и значения по умолчанию для кучи.
Хотя сервер аналогичен виртуальной машине клиента, VM Server специально настроила максимальную пиковую рабочую скорость. Его цель состоит в том, чтобы выполнить длительные серверные приложения, которые требуют самых быстрых скоростей запуска, превышающих быстрое время запуска или меньший следов памяти выполнения.
Компилятор VM Client-это классическая виртуальная машина и компилятор, используемый обновлениями в реальном времени (JIT), посредством предыдущих версий JDK. Виртуальные машины клиента обеспечивают улучшенную производительность для запуска приложений и апплетов. Горячие точки Java Virtual Machines клиенты сократили время запуска и использование приложений памяти, чтобы сделать их особенно подходящими для среды клиента. В целом, клиентская система имеет лучший графический пользовательский интерфейс.
Таким образом, реальная разница также находится на уровне компилятора:
Компилятор виртуальной машины клиента не пытается выполнить более сложные оптимизации, выполняемые компилятором на виртуальной машине сервера, но во время обмена требуется меньше времени для анализа и составления куска кода. Это означает, что виртуальная машина клиента может запустить быстрее и требует меньшего следов памяти.
Виртуальная машина сервера содержит расширенный адаптивный компилятор, который поддерживает множество оптимизаций компилятора C ++ для оптимизации, того же типа и некоторых оптимизаций, которые не могут быть сделаны с традиционными компиляторами, такими как активно внедренные вызовы виртуальных методов. Это конкурентное и производительное преимущество, статический компилятор. Методы адаптивной оптимизации очень гибки в своем подходе и обычно превосходят даже усовершенствованный статический анализ и методы компиляции.
При запуске режима сервера скорость медленная, но как только он будет запущен, производительность будет значительно улучшена. Причина в том, что когда виртуальная машина находится в режиме -клиенте, он использует легкий компилятор C1, в то время как в режиме Virtual Machine начался в режиме -серверке относительно тяжеловесный компилятор C2. C2 относительно тщательно скомпилирован, чем компилятор C1, и после подачи он обладает более высокой производительностью.
Как правило, просто измените порядок двух конфигураций -Сервер известных и -клиентов, известных, пока существует каталог java_home/jre/bin одновременно, соответствующий их соответствующей JVM
Сказав так много, я фактически подытожил в одном предложении:
Приложение начинается медленно, но работает быстрее в режиме сервера JVM, в то время как приложение запускается быстро, но работает быстрее в режиме клиента JVM.
Рекомендуется: Пожалуйста, запустите в режиме сервера на сервере и запустите в режиме клиента в режиме клиента или в режиме GUI.