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?
Odpowiedzi:
Nie przegap również
-XX:+JVMCIPrintProperties
opcji 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
źródło
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):
Lub następujące (które tylko przegląda
*.cpp
i*.hpp
pliki):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
!źródło
read the source
.