samenvatting over Java's twee VM's: Server & Client
--------------------------------------------------------------------van mezelf----------------------------------------------------------------------- Momenteel ondersteunt alleen 64-bit servermodus
Server-VM's starten ongeveer 10% langzamer op dan client-VM's.Draait minstens tien keer sneller dan de Client VM; Omdat de CPU, het geheugen en de harde schijf van de server krachtiger zijn dan de clientmachine, moet het programma na de uitrol in servermodus worden gestart om betere prestaties te behalen. JVM staat standaard op 1M in clientmodus en 64M voor -Xmx. JVM staat standaard op 128M in Servermodus en 1024M voor -Xmx.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; Over GC: In de clien-modus kiest de nieuwe generatie seriële GC, en de oude generatie kiest seriële GC In servermodus kiest de nieuwe generatie voor parallelle recycling van GC, en de oude generatie voor parallelle GC Over het algemeen zijn er twee manieren om onze systeemapplicatie te kiezen: doorvoerprioriteit en pauzetijdprioriteit, de standaard parallelle GC-modus van de server wordt gebruikt voor de doorvoerprioriteit, en de gelijktijdige GC (CMS)-modus wordt gekozen voor de prioriteit voor pauzetijd.
--------------------------------------------------------------------vanuit de browser------------------------------------------------------------------------- JDK heeft twee soorten VM's: VM-clients en VM-serverapplicaties. De twee oplossingen delen de hotspot-codebase van de Java-runtime, maar gebruiken verschillende compilers voor unieke prestatiekenmerken voor zowel de client als de server, en deze verschillen omvatten het schrijven van inline policies en heap-defaults.
Hoewel servers en client-VM's vergelijkbaar zijn, zijn server-VM's specifiek afgestemd op maximale pieksnelheden. Het is bedoeld om langlopende serverapplicaties uit te voeren die de snelste snelheid vereisen, boven een snelle opstarttijd of een kleine runtime-geheugenbeperking.
De Customer VM Compiler is een compiler die wordt gebruikt door klassieke virtuele machines en real-time upgrades (JIT) via eerdere versies van de JDK. Client-virtuele machines bieden verbeterde prestaties voor het uitvoeren van applicaties en applets. Hotspot-klanten van Java Virtual Machines zijn speciaal aangepast om de opstarttijd van applicaties en het geheugenverbruik te verminderen, waardoor ze bijzonder geschikt zijn voor klantomgevingen. Over het algemeen heeft het clientsysteem een betere grafische gebruikersinterface.
Dus het echte verschil ligt ook op het compilerniveau:
De client-virtuele machine-compiler probeert niet complexere optimalisaties uit te voeren die door de compiler op de server-virtuele machine worden uitgevoerd, maar tijdens de uitwisseling kost het minder tijd om een stuk code te analyseren en te compileren. Dit betekent dat clientvirtuele machines sneller kunnen starten en een kleinere geheugenruimte vereisen.
De servervirtuele machine bevat een geavanceerde adaptieve compiler die veel C++-compileroptimalisaties voor optimalisatie ondersteunt, van hetzelfde type, evenals enkele optimalisaties die niet met traditionele compilers kunnen worden uitgevoerd, zoals agressieve inline virtuele methode-aanroepen. Het is een concurrentie- en prestatievoordeel, statische compiler. Adaptieve optimalisatietechnieken zijn zeer flexibel in hun aanpak en presteren vaak beter dan zelfs geavanceerde statische analyse- en compilatietechnieken.
Wanneer de -Servermodus begint, is de snelheid traag, maar zodra deze draait, verbetert de prestatie aanzienlijk, want: wanneer de virtuele machine in -Clientmodus staat, gebruikt deze een lichtgewicht compiler met codenaam C1, en de virtuele machine die in -Servermodus wordt gestart gebruikt een compiler met codenaam C2, die relatief grondig gecompileerd is dan de C1-compiler, en de prestaties zijn hoger na de service.
Over het algemeen, zolang je de volgorde van de twee configuraties van -server KNOWN en -client KNOWN verandert,Het uitgangspunt is dat zowel server- als clientmappen bestaan in de /jre/bin-map van de JAVA_HOMEovereenkomend met hun respectievelijke JVM's
|