Das ist wirklich verknüpft HotSpot und die Standardoptionswerte ( Java HotSpot VM - Optionen ) , die zwischen Client und Server - Konfiguration abweichen.
Aus Kapitel 2 des Whitepapers ( Die Java HotSpot Performance Engine-Architektur ):
Das JDK enthält zwei Varianten der VM: ein clientseitiges Angebot und eine für Serveranwendungen optimierte VM. Diese beiden Lösungen teilen sich die Codebasis der Java HotSpot-Laufzeitumgebung, verwenden jedoch unterschiedliche Compiler, die für die eindeutig einzigartigen Leistungsmerkmale von Clients und Servern geeignet sind. Diese Unterschiede umfassen die Kompilierungs-Inlining-Richtlinie und die Heap-Standardeinstellungen.
Obwohl die Server- und Client-VMs ähnlich sind, wurde die Server-VM speziell optimiert, um die maximale Betriebsgeschwindigkeit zu maximieren. Es ist für die Ausführung von Serveranwendungen mit langer Laufzeit vorgesehen, die die schnellstmögliche Betriebsgeschwindigkeit mehr als eine schnelle Startzeit oder einen geringeren Speicherbedarf zur Laufzeit benötigen.
Der Client-VM-Compiler dient als Upgrade sowohl für die Classic-VM als auch für die Just-in-Time-Compiler (JIT), die von früheren Versionen des JDK verwendet wurden. Die Client-VM bietet eine verbesserte Laufzeitleistung für Anwendungen und Applets. Die Java HotSpot Client-VM wurde speziell optimiert, um die Startzeit der Anwendung und den Speicherbedarf zu verringern, sodass sie sich besonders gut für Clientumgebungen eignet. Im Allgemeinen ist das Client-System für GUIs besser.
Der eigentliche Unterschied liegt also auch auf der Compilerebene:
Der Client-VM-Compiler versucht nicht, viele der komplexeren Optimierungen auszuführen, die vom Compiler in der Server-VM durchgeführt werden. Im Gegenzug benötigt er jedoch weniger Zeit, um einen Code zu analysieren und zu kompilieren. Dies bedeutet, dass die Client-VM schneller gestartet werden kann und einen geringeren Speicherbedarf benötigt.
Die Server-VM enthält einen erweiterten adaptiven Compiler, der viele der gleichen Arten von Optimierungen unterstützt, die durch die Optimierung von C ++ - Compilern durchgeführt werden, sowie einige Optimierungen, die von herkömmlichen Compilern nicht durchgeführt werden können, z. B. aggressives Inlining über Aufrufe virtueller Methoden hinweg. Dies ist ein Wettbewerbs- und Leistungsvorteil gegenüber statischen Compilern. Die adaptive Optimierungstechnologie ist in ihrem Ansatz sehr flexibel und übertrifft in der Regel sogar fortgeschrittene statische Analyse- und Kompilierungstechniken.
Hinweis: Mit der Veröffentlichung von jdk6 Update 10 (siehe Versionshinweise zum Update : Änderungen in 1.6.0_10 ) wurde versucht, die Startzeit zu verbessern, jedoch aus einem anderen Grund als den Hotspot-Optionen, da sie mit einem viel kleineren Kernel anders gepackt wurden .
G. Demecki weist in den Kommentaren darauf hin, dass in 64-Bit-Versionen von JDK die -client
Option für viele Jahre ignoriert wird.
Siehe Windows- java
Befehl :
-client
Wählt die Java HotSpot Client-VM aus.
Ein 64-Bit-fähiges JDK ignoriert diese Option derzeit und verwendet stattdessen die Java Hotspot Server-VM .