Der Unterschied zwischen dem JVM -Clientmodus und dem Servermodus
Der Hauptunterschied zwischen dem JVM -Servermodus und dem Client -Modus besteht darin, dass beim Starten: - Servermodus beim Starten langsam ist, aber sobald er startet, wird die Leistung erheblich verbessert.
JVM kann die Leistung im Servermodus erheblich verbessern. Die Startgeschwindigkeit der Anwendungen im Servermodus beträgt etwa 10% langsamer als der Client -Modus, die laufende Geschwindigkeit ist jedoch mindestens 10 -mal schneller als Client VM.
Wenn die Parameter des Laufmodus nicht angegeben werden, erkennt die virtuelle Maschine, ob der Host ein Server ist. In diesem Fall beginnt es im Servermodus. Andernfalls beginnt es im Client -Modus. Die Grundlage für die Erkennung von J2SE5.0 beträgt mindestens 2 CPUs und mindestens 2 GB Speicher.
Da die CPU, der Speicher und die Festplatte des Servers stärker sind als der Client -Computer, sollte nach der Bereitstellung des Programms im Servermodus gestartet werden, um eine bessere Leistung zu erzielen.
JVM standardmäßig für -xms beträgt 1 m, -xmx ist 64 m im Client -Modus; JVM standardmäßig für -xms beträgt 128 m, -xmx ist 1024 m im Servermodus.
Server: Langsames Start und vollständigere Zusammenstellung. Der Compiler ist ein adaptiver Compiler mit hoher Effizienz und soll die serverseitigen Anwendungen optimieren und die Programmausführungsgeschwindigkeit in der Serverumgebung maximieren.
Client: Schnellstart, Nutzungsnutzung mit geringer Speicher, schnelle Zusammenstellung, optimiert für Desktop -Anwendungen, optimiert, um die Startzeit in der Kundenumgebung zu verkürzen.
Wenn der JVM zum Starten interaktiver Anwendungen der GUI -Schnittstelle verwendet wird, wird empfohlen, den Client -Modus zu verwenden, wenn das JVM zum Ausführen des Server -Hintergrundprogramms verwendet wird.
Wir können überprüfen, welchen Modus JVM funktioniert, indem wir ausführen: Java -Version.
Über GCC in Abbildung 1
Im Client -Modus wählt die neue Generation serielle GC, während die alte Generation serielle GC wählt, während die alte Generation serielle GC wählt
Im Servermodus wählt die neue Generation das parallele Recycling von GC, während die alte Generation parallel GC wählt.
Im Allgemeinen gibt es zwei Möglichkeiten, unsere Systemanwendung auszuwählen: Durchsatzpriorität und Zeitpriorität. Für die Durchsatzpriorität wird die Standard -Parallel -GC -Methode des Servers angewendet, und für die Pause Priorität wird die gleichzeitige GC (CMS) -Methode angewendet.
Andere erweiterte Wissenspunkte
JDK verfügt über zwei Arten von VM-, VM -Client- und VM -Serveranwendungen. Die beiden Lösungen teilen die Hotspot -Code -Basis der Java -Laufzeitumgebung, verwenden jedoch verschiedene Compiler, einzigartige Leistungsfunktionen für Clients und Server, mit Unterschieden, einschließlich des Schreibens von Inline -Richtlinien und Standardwerten für den Haufen.
Obwohl der Server der virtuellen Client -Maschine ähnelt, hat der Server VM die maximale Spitzenbetriebsdrehzahl speziell angepasst. Ziel ist es, langlebige Serveranwendungen auszuführen, für die die schnellsten Laufgeschwindigkeiten eine schnelle Startzeit oder eine kleinere Laufzeitspeicherung überschreiten müssen.
Der Client VM Compiler ist eine klassische virtuelle Maschine und ein Compiler, der von Echtzeit-Upgrades (JIT) über frühere Versionen von JDK verwendet wird. Virtuelle Client -Maschinen bieten eine verbesserte Leistung für das Ausführen von Anwendungen und Applets. Hotspots von Java Virtual Machines Kunden haben die Startzeit und die Speicherverwendung von Anwendungen verkürzt, um sie für die Kundenumgebung besonders geeignet zu machen. Im Allgemeinen verfügt das Client -System über eine bessere grafische Benutzeroberfläche.
Der eigentliche Unterschied liegt also auch auf Compiler -Ebene:
Der Client Virtual Machine Compiler versucht nicht, komplexere Optimierungen durch den Compiler auf der virtuellen Servermaschine durchzuführen. Während des Swaps dauert es weniger Zeit, ein Stück Code zu analysieren und zu kompilieren. Dies bedeutet, dass die virtuelle Clientmaschine schneller beginnen kann und einen kleineren Speicherpfunddruck erfordert.
Die virtuelle Servermaschine enthält einen erweiterten adaptiven Compiler, der viele C ++ - Compiler -Optimierungen für die Optimierung, denselben Typ und einige Optimierungen unterstützt, die nicht mit herkömmlichen Compilern durchgeführt werden können, wie z. B. aktiv eingeführte virtuelle Methodenaufrufe. Dies ist ein Wettbewerbs- und Leistungsvorteil, statischer Compiler. Adaptive Optimierungstechniken sind in seinem Ansatz sehr flexibel und sind in der Regel auch fortgeschrittene statische Analyse- und Kompilierungstechniken überlegen.
Beim Starten des Server -Modus ist die Geschwindigkeit langsam, aber sobald sie ausgeführt wird, wird die Leistung erheblich verbessert. Der Grund dafür ist, dass wenn sich die virtuelle Maschine im Klientenmodus befindet, einen leichten Compiler -Codenamed C1 verwendet, während die virtuelle Maschine, die im Server -Modus gestartet wurde, einen relativ schweren Compiler mit Codenamed C2 verwendet. C2 ist relativ gründlich zusammengestellt als der C1 -Compiler und hat nach dem Servieren eine höhere Leistung.
Ändern Sie im Allgemeinen einfach die Reihenfolge der beiden Konfigurationen -server und bekannter, so lange wie das Java_Home/JRE/Bin
Nachdem ich so viel gesagt hatte, habe ich tatsächlich in einem Satz zusammengefasst:
Die Anwendung beginnt langsam, wird jedoch im JVM -Servermodus schneller ausgeführt, während die Anwendung schnell beginnt, aber im JVM -Client -Modus schneller ausgeführt wird.
Empfohlen: Führen Sie bitte im Servermodus auf dem Server aus und im Client -Modus im Client -Modus oder im GUI -Modus aus.