Contesto: eseguo alcuni test delle prestazioni su un'applicazione Java che viene avviata attraverso diversi livelli di riferimento indiretto, così che non sono del tutto sicuro che l'applicazione venga lanciata con le bandiere che penso sia. Vorrei che il mio applicazione per includere un controllo di integrità (prima che inizia la sua performance test) e includere nei risultati (dopo il test) informazioni su come la JVM è stato messo a punto, come ad esempio:All'interno di una JVM in esecuzione, come determinare a livello di codice le opzioni jvm utilizzate all'avvio?
- Quali garbage collector era Usato?
- Era/sta facendo attivamente cpu profiling?
- Era/sta registrando attività gc?
- Era/è in modalità
-Xint
o-Xmixed
? - Era/è
-XX:ParallelGCThreads
set - se sì, a cosa, e in caso contrario, quale è l'impostazione predefinita per questa build? - Era/è
-XX:UseCompressedOops
acceso o spento? - ecc
C'è un modo per il codice Java per (all'interno di una JVM in esecuzione) interrogare le opzioni reali utilizzati per la sua JVM contenente? (Supponiamo che non riesca a vedere la riga di comando che mi ha lanciato, quindi non riesco a ri-analizzare quelle bandiere.)
Se non esiste un modo generale per determinarlo, le risposte specifiche per una particolare implementazione di JVM è anche benvenuta.
UPDATE:
E 'importante per la soluzione per essere in grado di sapere quali sono i valori di default sono per qualsiasi valore che non sia esplicitamente fornito sulla riga di comando. Altrimenti, coinvolgerà un sacco di legwork (a rischio di errore) per cercare quale sia il valore predefinito per una determinata combinazione JVM/piattaforma/versione/architettura. Sto testando una vasta gamma di JVM, quindi non voglio dover determinare manualmente quale sia l'impostazione predefinita per ogni parametro in ogni versione di jvm.
È possibile elencare il processo JVM avviato da PID con 'ps -ef' e qui è possibile vedere tutti gli argomenti di input di quel processo. Questo dovrebbe funzionare per qualsiasi tipo di JVM. –
@AlesJ. OP ha dichiarato che l'approccio a linea di comando non è un'opzione –
@AlesJ. - Mi darebbe solo valori impostati in modo esplicito, quindi non otterrei alcuna informazione sui valori impliciti della JVM (vedi modifica aggiornamento alla domanda). :-( – Mickalot