Zusammenfassung über Javas zwei VMs: Server & Client
--------------------------------------------------------------------von mir selbst----------------------------------------------------------------------- Derzeit unterstützt nur 64-Bit den Servermodus
Server-VMs starten etwa 10 % langsamer als Client-VMs.Läuft mindestens zehnmal schneller als die Client-VM; Da CPU, Speicher und Festplatte des Servers leistungsfähiger sind als der Client-Rechner, sollte das Programm nach der Bereitstellung im Servermodus gestartet werden, um eine bessere Leistung zu erzielen. JVM ist standardmäßig 1M im Client-Modus und 64M für -Xmx. JVM ist im Servermodus standardmäßig auf 128M und für -Xmx auf 1024M eingestellt.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; Über GC: Im Clien-Modus wählt die neue Generation die serielle GC, die alte Generation die serielle GC Im Servermodus wählt die neue Generation paralleles Recycling-GC, die alte Generation paralleles GC Im Allgemeinen gibt es zwei Möglichkeiten, unsere Systemanwendung auszuwählen: Durchgangspriorität und Pausenzeitpriorität, der Standard-Parallel-GC-Modus des Servers wird für die Durchsatzpriorität verwendet, und der Concurrent GC (CMS)-Modus wird für die Pausenzeitpriorität gewählt.
--------------------------------------------------------------------aus dem Browser------------------------------------------------------------------------- JDK hat zwei Arten von VMs: VM-Clients und VM-Server-Anwendungen. Die beiden Lösungen teilen sich den Hotspot-Codebase der Java-Laufzeit, verwenden jedoch unterschiedliche Compiler für einzigartige Leistungsmerkmale sowohl für Client als auch Server, und diese Unterschiede umfassen das Erstellen von Inline-Richtlinien und Heap-Standardwerten.
Obwohl Server und Client-VMs ähnlich sind, wurden Server-VMs speziell auf maximale Spitzenbetriebsgeschwindigkeiten optimiert. Es ist dafür gedacht, langlaufende Serveranwendungen auszuführen, die die höchste Laufzeit über eine schnelle Startzeit oder einen kleinen Speicherbedarf hinaus benötigen.
Der Customer VM Compiler ist ein Compiler, der von klassischen virtuellen Maschinen und Echtzeit-Upgrades (JIT) über frühere JDK-Versionen verwendet wird. Client-virtuelle Maschinen bieten eine verbesserte Leistung für das Ausführen von Anwendungen und Applets. Die Hotspot-Kunden von Java Virtual Machines wurden speziell angepasst, um die Startzeit der Anwendungen und den Speicherbedarf zu reduzieren, sodass sie besonders geeignet für Kundenumgebungen sind. Im Allgemeinen verfügt das Client-System über eine bessere grafische Benutzeroberfläche.
Der eigentliche Unterschied liegt also auch auf Compilerebene:
Der Client-Virtual-Machine-Compiler versucht nicht, komplexere Optimierungen durchzuführen, die vom Compiler auf der Server-Virtual-Machine durchgeführt werden, aber während des Austauschs dauert es weniger Zeit, einen Codeabschnitt zu analysieren und zu kompilieren. Das bedeutet, dass Client-virtuelle Maschinen schneller starten können und einen geringeren Speicherbedarf benötigen.
Die virtuelle Servermaschine enthält einen fortschrittlichen adaptiven Compiler, der viele C++-Compiler-Optimierungen für Optimierungen desselben Typs unterstützt, sowie einige Optimierungen, die mit traditionellen Compilern nicht möglich sind, wie aggressive Inline-in-virtual-Methodenaufrufe. Es ist ein Wettbewerbs- und Leistungsvorteil, ein statischer Compiler. Adaptive Optimierungstechniken sind in ihrem Ansatz sehr flexibel und übertreffen oft selbst fortgeschrittene statische Analyse- und Kompilierungstechniken.
Wenn der -Server-Modus startet, ist die Geschwindigkeit langsam, aber sobald er läuft, verbessert sich die Leistung erheblich, weil: Wenn die virtuelle Maschine im -Client-Modus ist, verwendet sie einen leichtgewichtigen Compiler mit dem Codenamen C1, und die virtuelle Maschine, die im -Server-Modus startet, verwendet einen Compiler mit dem Codenamen C2, der relativ gründlich kompiliert ist als der C1-Compiler, und die Leistung ist nach dem Service höher.
Im Allgemeinen, solange du die Reihenfolge der beiden Konfigurationen von -server KNOWN und -client KNOWN änderst,Die Prämisse ist, dass sowohl Server- als auch Client-Ordner im /jre/bin-Verzeichnis des JAVA_HOMEentsprechend ihren jeweiligen JVMs
|