Drukuj wszystkie flagi JVM

97

Znalazłem interesującą flagę JVM:

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

Drukuje setki różnych opcji, o których nigdy wcześniej nie słyszałem. Drukuje również wartości domyślne, które pomagają lepiej zdiagnozować zachowanie maszyny JVM. Kolejną interesującą flagą jest:

-XX:+UnlockExperimentalVMOptions

Czy ktoś zna jakąś dokumentację, która wyjaśnia każdy z nich?

Sachin Bhansali
źródło
Powodem, dla którego wiersz polecenia nie jest wymieniony w dokumentacji, jest to, że zgodnie z nazwą służy do diagnozowania maszyny wirtualnej. Można założyć, że ludzie debugujący hotspot prawdopodobnie je znają;)
Voo
1
ten link wyjaśnia te opcje w skrócie i całkiem dobrze.
sactiw

Odpowiedzi:

35

Nie przegap również -XX:+JVMCIPrintPropertiesopcji Graal JIT.

Przed zanurzeniem się w źródłach możesz przejrzeć następujące fragmenty i szybciej znaleźć odpowiednią opcję:

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

Andriy Plokhotnyuk
źródło
15

Najlepsza dokumentacja, jaką znalazłem, to źródło .

Użyłem tego SO Q&A do stworzenia kompilacji debugowania. Dzięki tej kompilacji do debugowania możesz uruchomić java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version.

Z katalogu ze źródłami możesz wykonać (zakładając, że używasz Linuksa, Cygwin lub podobnego):

grep -FR 'UnlockExperimentalVMOptions' hotspot/

Lub następujące (które tylko przegląda *.cppi *.hpppliki):

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

Następnie spójrz na pliki źródłowe. Prawdopodobnie najlepszym powodem, dla którego nie ma jednego dokumentu opisującego wszystkie opcje, jest to, że niektóre z nich lepiej pozostawić tym, którzy naprawdę rozumieją JVM, a najlepszym sposobem na to jest dokładne zaznajomienie się z kodem źródłowym.

Tak, w słowach (prawie) wielkiego mistrza , use the source!

Dan Cruz
źródło
1
Źródłem jest z definicji doskonała dokumentacja programu. Zobacz także codinghorror.com/blog/2012/04/…
Pyrolistics
@Pyrolistical Dzięki za link; dobra lektura i nie wiedziałem, o czym ostatnio pisał Jeff Atwood read the source.
Dan Cruz