2009-10-05 12 views
45

Próbuję ustalić, czy istnieje sposób na określenie właściwości uruchamiania maszyny JVM w ramach działającego procesu java. W szczególności próbuję dowiedzieć się, gdzie przechowywane są parametry takie jak -Xmx (maksymalny rozmiar sterty) i -XX: MaxPermSize. Używam wersji 1.6 jvm firmy Sun.Przeczytaj parametry uruchamiania Java JVM (np. -Xmx)

Jeśli zastanawiasz się, dlaczego chcę to zrobić, mam wiele serwerów WWW JVM, które mogą być skonfigurowane poprawnie i chcę je dodać do sprawdzenia kodu startowego. O wiele łatwiej jest mi sprawdzić fragment kodu java, który zostanie wdrożony wszędzie, niż ręcznie wyszukiwać i sprawdzać wszystkie pliki startowe jvm. W tej chwili pliki konfiguracyjne jvm na lepsze lub na gorsze nie są częścią naszego procesu kompilacji ani nie są kontrolowane pod kontrolą źródła.

Odpowiedz

52

Spróbuj:

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

To powinno pokazać wszystkie parametry JVM.

Uwaga: nie mamy również parametru JVM w VCS, ale w bazie danych czytamy nasze własne programy uruchamiające w produkcjach. W ten sposób możemy zmienić te wartości zdalnie, bez konieczności ponownego wdrażania ustawień pliku parametrów JVM.


Znajdziesz tu dobre sumary o różnej JVM tools to use in this article (z "Dustin's Software Development Cogitations and Speculations"), w tym Java Application Launcher linki do:

Technika ta wykorzystuje MXBeans Platformy dostępny od J2SE 5 (wsparcie niestandardowe MXBeans dodano Java SE 6).

Dwa użyteczne źródła informacji na temat parametrów JVM dostępnych przy użyciu JVM słoneczne są:

Obie te listy zasobów i opisać niektóre/wszystkie nie zalecanych-dla-casual-deweloper podwójnych X argumentów (-XX), które są dostępne.

+0

działa jak marzenie! Oczywiście nie znam java.lang.management tak jak powinienem. –

+0

co jeśli to Java 1.4? –

9

Z Java 7 czy później to tak proste, jak

java -XshowSettings:all

Powiązane problemy