2009-10-05 16 views
45

Estoy tratando de averiguar si hay una forma 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 dinámico) y -XX: MaxPermSize. Estoy ejecutando Sun's 1.6 jvm.Leer los parámetros de inicio Java JVM (por ejemplo, -Xmx)

Si se pregunta por qué quiero hacer esto, tengo una serie de servidores web JVM que pueden o no estar configurados correctamente y deseo 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 compilación ni se controlan en el control de código fuente.

Respuesta

52

Probar:

import java.lang.management.ManagementFactory; 
import java.lang.management.RuntimeMXBean; 

import java.util.List; 

public void runtimeParameters() { 
    RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); 
    List<String> aList = bean.getInputArguments(); 

    for (int i = 0; i < aList.size(); i++) { 
    System.out.println(aList.get(i)); 
    } 
} 

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

Nota: tampoco tenemos el parámetro JVM en VCS, pero sí 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.


Usted encontrará una buena suma un resumen de varios JVM tools to use in this article (del "Dustin's Software Development Cogitations and Speculations"), incluyendo Java Application Launcher enlaces a:

Esta técnica se aprovecha de MXBeans de plataforma disponibles ya que (se añadió soporte MXBeans personalizados en Java SE 6) J2SE 5.

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

Ambos lista de recursos y describir algunos/todos los argumentos X dobles no recomendados-para-el-casual-desarrollador-(-XX) que están disponibles.

+0

funciona como un encanto! Claramente, no conozco java.lang.management tan bien como debería. –

+0

¿y si es Java 1.4? –

9

Con Java 7 o posterior es tan fácil como

java -XshowSettings:all

Cuestiones relacionadas