Распечатать все флаги JVM

97

Нашел интересный флаг JVM:

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

Он печатает сотни различных вариантов, о которых я никогда раньше не слышал. Он также выводит значения по умолчанию, что помогает лучше диагностировать поведение JVM. Еще один интересный флаг:

-XX:+UnlockExperimentalVMOptions

Кто-нибудь знает какую-либо документацию, которая объясняет каждый из них?

Сачин Бхансали
источник
Причина, по которой командная строка не указана в документации, заключается в том, что, как следует из названия, она предназначена для диагностики виртуальной машины. Можно предположить, что люди, отлаживающие точки доступа, вероятно, знают их;)
Voo
1
эта ссылка объясняет эти параметры кратко и довольно хорошо.
жертву

Ответы:

35

Не упустите также -XX:+JVMCIPrintPropertiesвозможности Graal JIT.

Прежде чем погрузиться в источники, вы можете просмотреть следующие выдержки и быстрее найти подходящий вариант:

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

Лучшая документация, которую я нашел, - это источник .

Я использовал этот 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!

Дэн Круз
источник
1
Исходный код по определению является идеальной документацией программы. Также см. Codinghorror.com/blog/2012/04/…
Pyrolistical
@Pyrolistical Спасибо за ссылку; хорошее чтение, и я не знал, что Джефф Этвуд недавно писал в блоге read the source.
Дэн Круз