Нашел интересный флаг JVM:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
Он печатает сотни различных вариантов, о которых я никогда раньше не слышал. Он также выводит значения по умолчанию, что помогает лучше диагностировать поведение JVM. Еще один интересный флаг:
-XX:+UnlockExperimentalVMOptions
Кто-нибудь знает какую-либо документацию, которая объясняет каждый из них?
Ответы:
Не упустите также
-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
источник
Лучшая документация, которую я нашел, - это источник .
Я использовал этот SO Q&A для создания отладочной сборки. С помощью этой отладочной сборки вы можете запустить
java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version
.Из каталога с источниками вы можете выполнить (при условии, что вы используете Linux, Cygwin или тому подобное):
Или следующее (который смотрит только на
*.cpp
и*.hpp
файлы):Затем посмотрите исходные файлы. Вероятно, лучшая причина, по которой нет единого документа, описывающего все параметры, состоит в том, что некоторые из этих параметров лучше оставить тем, кто действительно разбирается в JVM, и лучший способ сделать это - хорошо ознакомиться с исходным кодом.
Так, в словах (почти) великого мастера ,
use the source
!источник
read the source
.