Печать всех флагов JVM
Найден интересный флаг JVM:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
Он печатает сотни различных вариантов, о которых я никогда не слышал раньше. Он также печатает значения по умолчанию, что помогает лучше диагностировать поведение JVM. Еще один интересный флаг:
-XX:+UnlockExperimentalVMOptions
Кто-нибудь знает какие-либо документы, которые объясняют каждый из них?
Ответы
Ответ 1
Перед тем, как погрузиться в источники, вы можете просмотреть следующие выдержки и быстрее найти подходящий вариант:
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
Ответ 2
Лучшая документация, которую я нашел, источник.
Я использовал этот SO Q & A для создания отладочной сборки. С помощью этой отладочной сборки вы можете запустить java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version
.
Из каталога с источниками вы можете выполнить (при условии, что используете Linux, Cygwin и т.п.):
grep -FR 'UnlockExperimentalVMOptions' hotspot/
Или, следующий (который смотрит только на файлы *.cpp
и *.hpp
):
find hotspot/ -name '*.[ch]pp' -exec grep -F 'UnlockExperimentalVMOptions' {} +
Затем посмотрите исходные файлы. Вероятно, лучшая причина, почему нет ни одного документа, описывающего все варианты, заключается в том, что некоторые из этих вариантов лучше оставить тем, кто действительно разбирается в JVM, и лучший способ сделать это - познакомиться с исходным кодом.
Итак, в словах (почти) большого мастера, use the source
!
Ответ 3
jcmd <pid> VM.flags -all
jcmd <pid> help VM.flags