8
votes

Comment vous assurer que j'utilise le "serveur" JVM?

JVM de Sun's Sun est disponible en deux arômes: -Client code> et -Server code>, où le serveur VM est censé être optimisé pour les processus de course à long terme et est recommandé pour les applications de serveur. .

Lorsque j'exécute java code> sans paramètres, il affiche les options d'utilisation, qui inclut le texte suivant: p> xxx pré>

ayant vu cela, Je n'ai pas tenu à ajouter le -server code> à la commande de démarrage du processus. P>

Toutefois, sur un journal de crash JVM récent, j'ai remarqué la ligne suivante près de la fin du fichier : P>

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)


2 commentaires

À propos, je suis conscient que la question semble plus appropriée pour Serverfault, mais je m'attends à ce que la réponse soit quelques lignes de code Java, il semble donc que les programmeurs ont de meilleures chances de répondre.


Je ressens la nécessité de souligner que simplement parce que la course "Java" sans argument n'utilise pas le serveur VM, qui ne garantit pas que les scripts / commandes lancent le processus qui s'est écrasé ne spécifie pas le client VM comme argument.


4 Réponses :


11
votes

Vous pouvez faire xxx

sur ma machine renvoie soit:

Java Hotspot (TM) Client VM

ou

hotspot java (TM) serveur 64 bits vm

Bien sûr, vous ne devriez pas faire quelque chose de critique en fonction de cette valeur, car cela changera probablement à l'avenir et sera complètement différent sur un autre JVM.


2 commentaires

Lors du fonctionnement en tant que serveur, la sortie est "Java Hotspot (TM) 64-bit Server VM". C'est une bonne contribution à ma propre question (qui devrait être intéressante pour quiconque qui se demande quelles informations sont disponibles en tant que propriétés du système): Stackoverflow.com/questions/1803075/...


Il peut également dire «serveur Java Hotspot (TM) VM». En outre, différents VMS peuvent renvoyer différentes chaînes.



9
votes

J'ai eu une question très similaire que j'ai posé sur Serverfault . Je dirais que si vous vous souciez de la version exécutée, utilisez toujours -Client ou -Server.


0 commentaires

1
votes

Eh bien, si vous commencez explicitement avec l'invite de ligne de commande -Server, vous exécutez en mode serveur. Vous pouvez vérifier cela avec ceci:

  ManagementFactory.getRuntimeMXBean().getInputArguments();


1 commentaires

Cette commande n'iste énumère pas l'argument "-Server" (à tous les autres arguments).



1
votes

sans écrire aucune ligne de code, si vous utilisez JConsole Pour se connecter à votre JVM, sous" Résumé VM ", il devrait indiquer exactement lequel la machine virtuelle (serveur ou client) est surveillé.

Par exemple, P>

Machine virtuelle: Â OpenJDK Server VM Version 1.6.0-B09 CODE> P>

Pour surveiller à distance votre JVM à l'aide de JConsole, activez simplement l'agent JMX (Extensions de gestion Java) en démarrant JVM avec ce qui suit Propriétés du système P>

> java.rmi.server.hostname=[your server IP/Name] // without this, on linux, jconsole will fail to connect to the remote server where JVM is running
> com.sun.management.jmxremote.authenticate=false
> com.sun.management.jmxremote.ssl=false
> com.sun.management.jmxremote.port=[portNum]


0 commentaires