santrauka apie dvi Java VM: Server & Client
--------------------------------------------------------------------nuo savęs----------------------------------------------------------------------- Šiuo metu tik 64 bitų palaiko serverio režimą
Serverio VM paleidžiamos maždaug 10% lėčiau nei klientų VM.Veikia bent 10 kartų greičiau nei kliento VM; Kadangi serverio procesorius, atmintis ir standusis diskas yra galingesni nei kliento įrenginys, įdiegus programą, ją reikia paleisti serverio režimu, kad būtų pasiektas geresnis našumas. JVM numatytasis 1M kliento režimu ir 64M -Xmx. JVM numatytasis 128M serverio režimu ir 1024M -Xmx.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; Apie GC: Clien režimu naujoji karta pasirenka serijinį GC, o senoji - serijinį GC Serverio režimu naujoji karta pasirenka lygiagretų GC, o senoji - lygiagrečią GC Paprastai tariant, yra du būdai, kaip pasirinkti mūsų sistemos programą: pralaidumo prioritetas ir pauzės laiko prioritetas, pralaidumo prioritetui naudojamas numatytasis lygiagretus serverio GC režimas, o pauzės laiko prioritetui pasirenkamas lygiagretus GC (TVS) režimas.
--------------------------------------------------------------------iš naršyklės------------------------------------------------------------------------- JDK turi dviejų tipų VM, VM klientus, VM serverio programas. Abu sprendimai turi bendrą "Java" vykdymo laiko viešosios interneto prieigos taško kodų bazę, tačiau naudoja skirtingus kompiliatorius, kad būtų užtikrintos unikalios kliento ir serverio našumo charakteristikos, ir šie skirtumai apima įdėtųjų strategijų ir krūvos numatytųjų nustatymų rašymą.
Nors serveriai ir klientų VM yra panašūs, serverių VM buvo specialiai pritaikytos maksimaliam didžiausiam veikimo greičiui. Jis skirtas vykdyti ilgai veikiančias serverio programas, kurioms reikalingas didžiausias veikimo greitis, viršijantis greitą paleidimo laiką arba mažą vykdymo atminties plotą.
Kliento VM kompiliatorius yra kompiliatorius, kurį naudoja klasikinės virtualios mašinos ir realaus laiko atnaujinimai (JIT) per ankstesnes JDK versijas. Kliento virtualiosios mašinos užtikrina geresnį programų ir programėlių paleidimo našumą. "Java Virtual Machines" viešosios interneto prieigos taškų klientai buvo specialiai pritaikyti, kad sumažintų programos paleidimo laiką ir atminties pėdsaką, kad jie būtų ypač tinkami klientų aplinkai. Apskritai kliento sistema turi geresnę grafinę vartotojo sąsają.
Taigi tikrasis skirtumas taip pat yra kompiliatoriaus lygmenyje:
Kliento virtualios mašinos kompiliatorius nebando atlikti sudėtingesnių optimizacijų, kurias kompiliatorius atlieka serverio virtualioje mašinoje, tačiau mainų metu kodo dalies analizė ir kompiliavimas užtrunka mažiau laiko. Tai reiškia, kad kliento virtualios mašinos gali paleisti greičiau ir reikalauja mažesnio atminties ploto.
Serverio virtualioje mašinoje yra pažangus adaptyvus kompiliatorius, palaikantis daugybę to paties tipo C++ kompiliatoriaus optimizavimo, taip pat kai kuriuos optimizavimus, kurių negalima atlikti naudojant tradicinius kompiliatorius, pvz., agresyvius virtualių metodų iškvietimus. Tai konkurencinis ir našumo pranašumas, statinis kompiliatorius. Adaptyvaus optimizavimo metodai yra labai lankstūs ir dažnai pranoksta net pažangius statinės analizės ir kompiliavimo metodus.
Kai paleidžiamas -Server režimas, greitis yra lėtas, tačiau kai jis veikia, našumas labai pagerės, nes: kai virtuali mašina veikia -Client režimu, ji naudoja lengvą kompiliatorių kodiniu pavadinimu C1, o virtuali mašina, paleista -Server režimu, naudoja kompiliatorių kodiniu pavadinimu C2, kuris yra gana kruopščiai kompiliuotas nei C1 kompiliatorius, o našumas yra didesnis po aptarnavimo.
Paprastai, kol pakeisite dviejų konfigūracijų -server KNOWN ir -client KNOWN tvarką,Prielaida yra ta, kad tiek serverio, tiek kliento aplankai egzistuoja JAVA_HOME kataloge /jre/binatitinkančias jų atitinkamas JVM
|