2009-10-05 9 views
45

Ich versuche herauszufinden, ob es einen Weg gibt, die JVM-Starteigenschaften aus einem laufenden Java-Prozess zu ermitteln. Insbesondere versuche ich herauszufinden, wo Parameter wie -Xmx (maximale Größe des Heapspeichers) und -XX: MaxPermSize gespeichert sind. Ich laufe Sun's 1.6 jvm.Lesen Java JVM-Startparameter (zB -Xmx)

Wenn Sie sich fragen, warum ich dies tun möchte, habe ich eine Reihe von JVM-Webservern, die möglicherweise richtig konfiguriert sind, und ich möchte dies zum Startcode-Check hinzufügen. Es ist viel einfacher für mich, einen Java-Code einzuchecken, der überall eingesetzt wird, als alle jvm-Startdateien manuell zu finden und zu überprüfen. Im Moment sind die jvm-Konfigurationsdateien für besser oder schlechter nicht Teil unseres Build-Prozesses oder in die Quellcodeverwaltung eingecheckt.

Antwort

52

Versuchen:

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

dass alle JVM-Parameter zeigen.

Hinweis: Wir haben auch keinen JVM-Parameter in VCS, sondern in einer Datenbank, die von unseren eigenen Launcher in Produktionen gelesen wird. Auf diese Weise können wir diese Werte remote ändern, ohne die JVM-Parameterdateieinstellungen erneut bereitstellen zu müssen.


Sie eine gute Sumary verschiedenen JVM tools to use in this article finden (von den "Dustin's Software Development Cogitations and Speculations"), einschließlich Java Application Launcher Links zu:

Diese Technik Plattform nutzt MXBeans verfügbar seit J2SE 5 (custom MXBeans Unterstützung in Java SE 6 hinzugefügt wurde).

Zwei nützliche Quellen von Informationen über die JVM-Parameter zur Verfügung, wenn Sun JVM verwenden, sind:

Beide dieser Ressourcen Liste und beschreiben einige/alle der nicht empfohlenes-for-the-Casual-Entwickler Doppel X Argumente (-XX), die verfügbar sind.

+0

wirkt wie ein Zauber! Ich kenne java.lang.management eindeutig nicht so gut wie ich sollte. –

+0

Was ist, wenn es Java 1.4 ist? –

9

Mit Java 7 oder später ist es so einfach wie

java -XshowSettings:all