Sun's JVM è disponibile in due versioni: -client
e -server
, in cui si suppone che la Server VM sia ottimizzata per processi a esecuzione prolungata ed è consigliata per le applicazioni server.Come assicurarsi che sto usando la JVM "server"?
Quando eseguo java
senza parametri, visualizza le opzioni di utilizzo, che include il seguente testo:
The default VM is server, because you are running on a server-class machine.
Dopo aver visto questo, non mi preoccupai di aggiungere il -server
al comando di avvio del processo.
Tuttavia, in una recente crash log JVM, ho notato la seguente riga vicino alla fine del file:
vm_info: Java HotSpot(TM) Client VM (14.0-b16) for linux-x86 JRE (1.6.0_14-b08), built on May 21 2009 02:01:47 by "java_re" with gcc 3.2.1-7a (J2SE release)
Mi sembra che Java utilizza il client VM, nonostante ciò che si dice nella messaggio di aiuto. Aggiungerò l'opzione -server
al mio comando di avvio, ma ora sono sospettoso. Quindi la mia domanda è: c'è un modo per assicurarmi che la VM in cui sto girando sia davvero la Server VM, senza ricorrere a forzare un crash JVM?
Il sistema operativo è ubuntu 8.04, ma sto utilizzando JDK 1.6.0_14 che ho scaricato dal sito Web di Sun.
A modo, sono consapevole che la domanda sembra più appropriata per ServerFault, ma mi aspetto che la risposta sia poche righe di codice java, quindi sembra che i programmatori abbiano maggiori possibilità di risposta. – itsadok
Sento la necessità di far notare che solo perché l'esecuzione di "java" senza argomenti sta utilizzando la VM del server, ciò non garantisce che qualunque script/comando avvii il processo che si è arrestato non specifica la VM del client come argomento. –