zhrnutie o dvoch VM v Jave: Server & Client
--------------------------------------------------------------------pred sebou samým----------------------------------------------------------------------- V súčasnosti podporuje serverový režim iba 64-bitový
Serverové VM sa spúšťajú asi o 10 % pomalšie ako klientské VM.Beží aspoň 10-krát rýchlejšie ako Client VM; Keďže CPU, pamäť a pevný disk servera sú výkonnejšie ako klientský stroj, po nasadení programu by sa mal program spustiť v serverovom režime, aby sa dosiahol lepší výkon. JVM predvolene nastavuje 1M v klientskom režime a 64M pre -Xmx. JVM predvolene nastavuje 128M v serverovom režime a 1024M pre -Xmx.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; O GC: V režime clien si nová generácia vyberá sériovú GC a stará generácia sériovú GC V serverovom režime nová generácia volí paralelné recyklačné GC a stará generácia paralelné GC Vo všeobecnosti existujú dva spôsoby, ako si vybrať našu systémovú aplikáciu: priorita priepustnosti a priorita času pauzy, predvolený paralelný režim GC servera sa používa pre prioritu priepustnosti a režim súbežného GC (CMS) je zvolený pre prioritu času pauzy.
--------------------------------------------------------------------z prehliadača------------------------------------------------------------------------- JDK má dva typy VM: VM klientov, VM serverové aplikácie. Obe riešenia zdieľajú hotspot kódovú základňu Java runtime, ale používajú odlišné kompilátory pre jedinečné výkonnostné charakteristiky pre klienta aj server, pričom tieto rozdiely zahŕňajú písanie inline politík a heap predvolených nastavení.
Aj keď sú servery a klientské VM podobné, serverové VM boli špeciálne naladené na maximálne špičkové prevádzkové rýchlosti. Je určený na spúšťanie dlhodobo bežiacich serverových aplikácií, ktoré vyžadujú najvyššiu rýchlosť behu nad rámec rýchleho štartu alebo malej pamäťovej náročnosti počas behu.
Customer VM Compiler je kompilátor používaný klasickými virtuálnymi strojmi a real-time upgrademi (JIT) počas predchádzajúcich verzií JDK. Klientské virtuálne stroje poskytujú lepší výkon pre bežiace aplikácie a applety. Hotspot zákazníci Java virtuálnych strojov boli špeciálne upravení tak, aby znížili čas štartu aplikácií a spotrebovali pamäť, aby boli obzvlášť vhodné pre zákaznícke prostredia. Vo všeobecnosti má klientský systém lepšie grafické používateľské rozhranie.
Skutočný rozdiel je teda aj na úrovni kompilátora:
Klientský kompilátor virtuálneho stroja sa nesnaží vykonávať zložitejšie optimalizácie vykonané kompilátorom na serverovom virtuálnom stroji, ale počas výmeny trvá analýza a kompilácia kódu kratšie čas. To znamená, že klientské virtuálne stroje môžu štartovať rýchlejšie a vyžadujú menšiu pamäťovú náročnosť.
Serverový virtuálny stroj obsahuje pokročilý adaptívny kompilátor, ktorý podporuje mnoho optimalizácií kompilátorov v C++, rovnakého typu, ako aj niektoré optimalizácie, ktoré nie je možné vykonať tradičnými kompilátormi, napríklad agresívne inline volania virtuálnych metód. Je to statický kompilátor s konkurenčnou a výkonnostnou výhodou. Techniky adaptívnej optimalizácie sú veľmi flexibilné vo svojom prístupe a často prekonávajú aj pokročilé techniky statickej analýzy a kompilácie.
Keď sa spustí režim -Server, rýchlosť je pomalá, ale po spustení sa výkon výrazne zlepší, pretože: keď je virtuálny stroj v režime -Client, používa ľahký kompilátor s kódovým označením C1 a virtuálny stroj spustený v režime -Server používa kompilátor s kódovým označením C2, ktorý je relatívne dôkladne skompilovaný ako kompilátor C1 a výkon je po službe vyšší.
Vo všeobecnosti, pokiaľ zmeníte poradie dvoch konfigurácií -server KNOWN a -client KNOWN,Predpokladom je, že v adresári /jre/bin JAVA_HOME existujú serverové aj klientske priečinkyzodpovedajúce ich príslušným JVM
|