Stampa tutti i flag JVM


96

Trovato un interessante flag JVM:

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version

Stampa centinaia di varie opzioni, di cui non avevo mai sentito parlare prima. Stampa anche i valori predefiniti, che aiutano a diagnosticare meglio i comportamenti JVM. Un'altra bandiera interessante è:

-XX:+UnlockExperimentalVMOptions

Qualcuno sa di documentazione che spieghi ognuno di loro?



Il motivo per cui la riga di comando non è elencata nella documentazione è perché, come dice il nome, è lì per diagnosticare la VM. Si può presumere che le persone che eseguono il debug dell'hotspot probabilmente li conoscano;)
Voo

1
questo collegamento spiega queste opzioni in breve e abbastanza bene.
sactiw

Risposte:


35

Da non perdere anche -XX:+JVMCIPrintPropertiesper le opzioni Graal JIT.

Prima di immergerti nelle fonti puoi scorrere i seguenti estratti e trovare più rapidamente l'opzione adatta:

https://chriswhocodes.com/ (OracleJDK 6/7/8/9/10/11/12, OpenJDK 8/9/10/11, Graal CE / EE, OpenJ9, Zing)

http://jvm-options.tech.xebia.fr/

http://www.pingtimeout.fr/2012/05/jvm-options-complete-reference.html

http://stas-blogspot.blogspot.com/2011/07/most-complete-list-of-xx-options-for.html


15

La migliore documentazione che ho trovato è la fonte .

Ho usato questo SO Q&A per creare una build di debug. Con questa build di debug, puoi eseguirejava -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version .

Dalla directory con i sorgenti, puoi eseguire (supponendo che tu stia usando Linux, Cygwin o simili):

grep -FR 'UnlockExperimentalVMOptions' hotspot/

Oppure, il seguente (che guarda solo *.cppe *.hppfile):

find hotspot/ -name '*.[ch]pp' -exec grep -F 'UnlockExperimentalVMOptions' {} +

Quindi guarda i file di origine. Probabilmente il motivo migliore per cui non esiste un documento che descriva tutte le opzioni è che alcune di queste opzioni è meglio lasciare a coloro che comprendono veramente la JVM e il modo migliore per farlo è acquisire familiarità con il codice sorgente.

Così, nelle parole (quasi) di un grande maestro , use the source!


1
La fonte è per definizione perfetta documentazione del programma. Vedi anche codinghorror.com/blog/2012/04/…
Pyrolistical

@ Pirolistico Grazie per il collegamento; buona lettura e non sapevo di cui Jeff Atwood abbia recentemente scritto sul blog read the source.
Dan Cruz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.