2009-10-05 13 views
45

Sto cercando di capire se esiste un modo per determinare le proprietà di avvio JVM da un processo java in esecuzione. Nello specifico sto cercando di scoprire dove sono memorizzati parametri come -Xmx (dimensione massima heap) e -XX: MaxPermSize. Sto usando Sun's 1.6 jvm.Leggere i parametri di avvio Java JVM (ad es. -Xmx)

Se vi state chiedendo perché voglio farlo, ho un numero di server Web JVM che possono o non possono essere configurati correttamente e voglio aggiungerlo al controllo del codice di avvio. È molto più semplice per me controllare un pezzo di codice java che viene distribuito ovunque che trovare e controllare manualmente tutti i file di avvio di jvm. In questo momento i file di configurazione jvm in meglio o in peggio non fanno parte del nostro processo di compilazione o sono controllati nel controllo del codice sorgente.

risposta

52

Prova:

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

Questo dovrebbe mostrare tutti i parametri JVM.

Nota: non abbiamo il parametro JVM in VCS, ma in un database, letto dai nostri lanciatori nelle produzioni. In questo modo, possiamo modificare questi valori in remoto, senza dover ridistribuire le impostazioni del file dei parametri JVM.


Troverete una buona sumary di vari JVM tools to use in this article (dal "Dustin's Software Development Cogitations and Speculations"), tra cui Java Application Launcher collegamenti a:

Questa tecnica sfrutta MXBeans piattaforma disponibile dal J2SE 5 (supporto MXBeans personalizzati è stato aggiunto nel Java SE 6).

Due utili fonti di informazioni sui parametri JVM disponibili quando si utilizza JVM di Sun sono:

Entrambi questi lista di risorse e descrivere alcuni/tutti gli argomenti X doppio non-raccomandati-per-il-casual-sviluppatore (-XX) che sono disponibili.

+0

funziona come un fascino! Chiaramente non conosco il java.lang.management come dovrei. –

+0

e se fosse Java 1.4? –

9

con Java 7 o versione successiva è facile come

java -XshowSettings:all

Problemi correlati