Encontrou um sinalizador JVM interessante:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
Ele imprime centenas de várias opções, das quais nunca ouvi falar antes. Ele também imprime valores padrão, o que ajuda a diagnosticar melhor os comportamentos da JVM. Outra bandeira interessante é:
-XX:+UnlockExperimentalVMOptions
Alguém conhece alguma documentação que explique cada um deles?
Respostas:
Não perca também as
-XX:+JVMCIPrintProperties
opções do Graal JIT.Antes de mergulhar nas fontes, você pode ler os seguintes extratos e encontrar a opção adequada mais rapidamente:
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
fonte
A melhor documentação que encontrei é a fonte .
Eu usei este SO Q&A para criar uma compilação de depuração. Com esta compilação de depuração, você pode executar
java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version
.Do diretório com as fontes, você pode executar (assumindo que está usando Linux, Cygwin ou semelhante):
Ou o seguinte (que apenas examina os arquivos
*.cpp
e*.hpp
):Em seguida, examine os arquivos de origem. Provavelmente, a melhor razão pela qual não há um documento que descreva todas as opções é que algumas dessas opções devem ser deixadas para aqueles que realmente entendem a JVM e a melhor maneira de fazer isso é familiarizando-se intimamente com o código-fonte.
Assim, nas palavras (quase) de um grande mestre ,
use the source
!fonte
read the source
.