Lea los parámetros de inicio de Java JVM (por ejemplo, -Xmx)

Estoy tratando de averiguar si hay una manera de determinar las propiedades de inicio de JVM desde un proceso Java en ejecución. Específicamente, estoy tratando de averiguar dónde se almacenan los parámetros tales como -Xmx (tamaño máximo de almacenamiento dynamic) y -XX: MaxPermSize. Estoy ejecutando Sun’s 1.6 jvm.

Si se pregunta por qué quiero hacer esto, tengo una serie de servidores web JVM que pueden o no estar configurados correctamente y quiero agregar esto a la verificación del código de inicio. Es mucho más fácil para mí verificar un fragmento de código java que se implementa en todas partes que buscar y verificar manualmente todos los archivos de inicio de jvm. En este momento, los archivos de configuración de jvm, para bien o para mal, no son parte de nuestro proceso de comstackción ni se controlan en el control de código fuente.

Tratar:

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 ) ); } } 

Eso debería mostrar todos los parámetros de JVM.

Nota: tampoco tenemos el parámetro JVM en VCS, sino en una base de datos, leída por nuestros propios lanzadores en producciones. De esta forma, podemos cambiar esos valores de forma remota, sin tener que volver a implementar la configuración del archivo de parámetros de JVM.


Encontrará un buen resumen de varias herramientas de JVM para usar en este artículo (de las "Cognos y especulaciones de desarrollo de software de Dustin" ), incluidos los enlaces de Java Application Launcher a:

  • Llamada ManagementFactory.getRuntimeMXBean( )
  • getInputArguments() javadoc
  • Acceder a los argumentos de JVM desde Java (para determinar, por ejemplo, si JVM se está ejecutando en modo de depuración, para alterar la lógica de "inicialización de grilla" de una aplicación)
  • Tipo de anotación MXBean
  • Tutorial de Java de MXBean

Esta técnica aprovecha los Platform MXBeans disponibles desde J2SE 5 (el soporte personalizado de MXBeans fue agregado en Java SE 6 ).

Dos fonts de información útiles sobre los parámetros de JVM disponibles cuando se usa la JVM de Sun son:

  • Una colección de opciones de JVM y
  • Las zonas favoritas de Charles Nutter JVM Flags .

Ambos recursos enumeran y describen algunos / todos los argumentos double X del desarrollador no recomendado para el desarrollador casual ( -XX ) que están disponibles.

Con Java 7 o posterior es tan fácil como

java -XshowSettings:all