Lire les parameters de démarrage de Java JVM (par exemple, -Xmx)

J’essaie de savoir s’il existe un moyen de déterminer les propriétés de démarrage de JVM à partir d’un processus Java en cours d’exécution. Plus précisément, j’essaie de trouver où sont stockés des parameters tels que -Xmx (taille maximale du tas) et -XX: MaxPermSize. Je lance le jvm 1.6 de Sun.

Si vous vous demandez pourquoi je veux faire cela, j’ai un certain nombre de serveurs Web JVM qui peuvent être configurés correctement ou non et je souhaite les append à la vérification du code de démarrage. Il est beaucoup plus facile pour moi d’enregistrer un morceau de code java qui est déployé partout que de rechercher et de vérifier manuellement tous les fichiers de démarrage de jvm. À l’heure actuelle, les fichiers de configuration de jvm, pour le meilleur ou pour le pire, ne font pas partie de notre processus de génération ou ne sont pas intégrés au contrôle de code source.

Essayer:

import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.util.List; public void runtimeParameters() { RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); List aList = bean.getInputArguments(); for (int i = 0; i < aList.size(); i++) { System.out.println( aList.get( i ) ); } } 

Cela devrait montrer tous les parameters de la JVM.

Note: nous n'avons pas non plus de paramètre JVM dans VCS, mais dans une firebase database, lue par nos propres lanceurs dans les productions. De cette façon, nous pouvons modifier ces valeurs à distance sans avoir à redéployer les parameters de fichier de parameters JVM.


Vous trouverez un bon résumé des divers outils JVM à utiliser dans cet article (à partir des "Cogitations et spéculations sur le développement logiciel de Dustin" ), y compris les liens Java Application Launcher vers:

  • Appel de ManagementFactory.getRuntimeMXBean( )
  • getInputArguments() javadoc
  • Accès aux arguments JVM à partir de Java (pour déterminer, par exemple, si JVM s'exécute en mode débogage, afin de modifier la logique "d'initialisation de la grid" d'une application)
  • Type d'annotation MXBean
  • Tutoriel Java MXBean

Cette technique tire parti de Platform MXBeans disponible depuis J2SE 5 (un support MXBeans personnalisé a été ajouté à Java SE 6 ).

Deux sources d’information utiles sur les parameters JVM disponibles lors de l’utilisation de la machine virtuelle Java sont les suivantes:

  • Une collection d'options JVM et
  • Drapeaux JVM préférés de Charles Nutter.

Ces deux ressources répertorient et décrivent certains / tous les arguments double X non recommandés pour le développeur occasionnel ( -XX ) disponibles.

Avec Java 7 ou version ultérieure, c’est aussi simple que

java -XshowSettings:all