Краткое содержание двух виртуальных машин Java: сервер и клиент
--------------------------------------------------------------------от самого себя----------------------------------------------------------------------- В настоящее время только 64-битный режим поддерживает серверный режим
Серверные виртуальные машины запускаются примерно на 10% медленнее, чем клиентские.Работает как минимум в 10 раз быстрее, чем Client VM; Поскольку процессор, память и жёсткий диск сервера мощнее клиентской машины, после развертывания программы её следует запускать в серверном режиме для улучшения производительности. JVM по умолчанию в клиентском режиме — 1M, а для -Xmx — 64M. JVM по умолчанию установлен на 128M в серверном режиме и 1024M для -Xmx.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; О GC: В режиме клиена новое поколение выбирает serial GC, а старое поколение — serial GC В серверном режиме новое поколение выбирает параллельную переработку GC, а старое поколение — параллельную GC В целом, существует два способа выбора системного приложения: приоритет пропускной способности и приоритет времени паузы; стандартный режим параллельного GC сервера используется для приоритета пропускной способности, а режим параллельного GC (CMS) выбран для приоритета времени паузы.
--------------------------------------------------------------------из браузера------------------------------------------------------------------------- JDK имеет два типа виртуальных машин: клиенты виртуальной машины и серверные приложения. Оба решения используют общий код горячей точки Java-runtime, но используют разные компиляторы для уникальных характеристик производительности как для клиента, так и для сервера, а эти различия включают написание встроенных политик и стандартные настройки кучи.
Хотя серверы и клиентские виртуальные машины схожи, серверные виртуальные машины специально настроены для максимальных пиковых скоростей работы. Он предназначен для запуска долгосрочных серверных приложений, требующих максимальной скорости, превышающей быстрое запусковое время или небольшой объем памяти во время выполнения.
Компилятор VM Client — это компилятор, используемый классическими виртуальными машинами и обновлениями в реальном времени (JIT) через предыдущие версии JDK. Клиентские виртуальные машины обеспечивают повышенную производительность для запуска приложений и апплетов. Клиенты Java Virtual Machines в горячих точках были специально адаптированы для сокращения времени запуска приложений и использования памяти, чтобы сделать их особенно подходящими для клиентских сред. В целом, клиентская система обладает лучшим графическим интерфейсом.
Так что настоящая разница также на уровне компилятора:
Клиентский компилятор виртуальной машины не пытается выполнять более сложные оптимизации, выполняемые компилятором на серверной виртуальной машине, но во время обмена процессом анализа и компиляция кода занимает меньше времени. Это означает, что клиентские виртуальные машины могут запускаться быстрее и требуют меньшего объема памяти.
Серверная виртуальная машина содержит продвинутый адаптивный компилятор, поддерживающий множество оптимизаций компиляторов C++ для оптимизации того же типа, а также некоторые оптимизации, которые нельзя реализовать с традиционными компиляторами, например, агрессивные встроенные вызовы виртуальных методов. Это конкурентное и производительное преимущество, статический компилятор. Методы адаптивной оптимизации очень гибки в подходе и часто превосходят даже продвинутые методы статического анализа и компиляции.
Когда запускается режим -Server, скорость медленная, но после запуска производительность значительно улучшается, потому что: когда виртуальная машина находится в режиме -Client, она использует лёгкий компилятор с кодовым названием C1, а виртуальная машина, запущенная в режиме -Server, использует компилятор кодового имени C2, который относительно тщательно скомпилирован, чем компилятор C1, и производительность выше после обслуживания.
В целом, если изменить порядок двух конфигураций -server KNOWN и -client KNOWN,Суть в том, что в каталоге /jre/bin JAVA_HOME существуют и серверная, и клиентская папкисоответствующие их JVM
|