Riassunto sulle due VM di Java : Server e Client
--------------------------------------------------------------------da me stesso----------------------------------------------------------------------- Attualmente, solo il 64 bit supporta la modalità server
Le VM server si avviano circa il 10% più lentamente rispetto alle VM client.Gira almeno 10 volte più velocemente della Client VM; Poiché la CPU, la memoria e il disco rigido del server sono più potenti della macchina client, dopo il dispiegamento del programma dovrebbe essere avviato in modalità server per ottenere prestazioni migliori. La JVM è imposta di default a 1M in modalità client e a 64M per -Xmx. La JVM è imposta di default a 128M in modalità Server e 1024M a -Xmx.
server:启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计。
client:快速启动,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化; Informazioni su GC: Nella modalità clien, la nuova generazione sceglie il GC seriale, mentre la vecchia generazione sceglie il GC seriale In modalità server, la nuova generazione sceglie il riciclo GC parallelo, mentre la vecchia generazione sceglie GC parallelo In generale, ci sono due modi per scegliere la nostra applicazione di sistema: priorità di throughput e priorità di tempo di pausa, la modalità GC parallela predefinita del server viene utilizzata per la priorità di throughput, e la modalità GC concorrente (CMS) viene selezionata per la priorità di tempo di pausa.
--------------------------------------------------------------------dal browser------------------------------------------------------------------------- JDK ha due tipi di VM: client VM, applicazioni server VM. Le due soluzioni condividono il codice hotspot del runtime Java, ma utilizzano compilatori diversi per caratteristiche di prestazioni uniche sia per il client che per il server, e queste differenze includono la scrittura di policy inline e predefiniti di heap.
Sebbene server e VM client siano simili, le VM server sono state specificamente ottimizzate per raggiungere velocità operative massime di picco. È pensato per eseguire applicazioni server di lunga durata che richiedono la velocità di esecuzione più elevata oltre a un rapido avvio o a un piccolo footprint di memoria a runtime.
Il Customer VM Compiler è un compilatore utilizzato dalle macchine virtuali classiche e dagli aggiornamenti in tempo reale (JIT) tramite versioni precedenti del JDK. Le macchine virtuali client offrono prestazioni migliorate per l'esecuzione di applicazioni e applet. I clienti hotspot delle Java Virtual Machines sono stati appositamente adattati per ridurre i tempi di avvio delle applicazioni e l'ingombro di memoria, rendendoli particolarmente adatti agli ambienti dei clienti. In generale, il sistema client ha un'interfaccia grafica migliore.
Quindi la vera differenza è anche a livello del compilatore:
Il compilatore della macchina virtuale client non tenta di eseguire ottimizzazioni più complesse eseguite dal compilatore sulla macchina virtuale server, ma durante lo scambio ci vuole meno tempo per analizzare e compilare un pezzo di codice. Ciò significa che le macchine virtuali client possono avviarsi più velocemente e richiedono un footprint di memoria più ridotto.
La macchina virtuale server contiene un compilatore adattivo avanzato che supporta molte ottimizzazioni C++ per l'ottimizzazione, dello stesso tipo, oltre ad alcune ottimizzazioni che non possono essere effettuate con i compilatori tradizionali, come l'aggressive inline nelle chiamate di metodi virtuali. È un compiler statico e competitivo e in termini di prestazioni. Le tecniche di ottimizzazione adattiva sono molto flessibili nel loro approccio e spesso superano anche le tecniche avanzate di analisi statica e compilazione.
Quando la modalità -Server si avvia, la velocità è lenta, ma una volta in esecuzione le prestazioni migliorano notevolmente, perché: quando la macchina virtuale è in modalità -Client, utilizza un compilatore leggero con nome in codice C1, e la macchina virtuale avviata in modalità -Server utilizza un compilatore con nome in codice C2, che è relativamente accuratamente compilato rispetto al compilatore C1, e le prestazioni sono superiori dopo il servizio.
Generalmente, finché si cambia l'ordine delle due configurazioni di -server KNOWN e -client KNOWN,La premessa è che sia le cartelle server che quelle client esistano nella directory /jre/bin della JAVA_HOMEcorrispondenti alle rispettive JVM
|