Encontré una bandera JVM interesante:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
Imprime cientos de opciones distintas, de las que nunca había oído hablar antes. También imprime valores predeterminados, lo que ayuda a diagnosticar mejor los comportamientos de JVM. Otra bandera interesante es:
-XX:+UnlockExperimentalVMOptions
¿Alguien conoce alguna documentación que explique cada uno de ellos?
Respuestas:
No te pierdas también las
-XX:+JVMCIPrintProperties
opciones de Graal JIT.Antes de sumergirse en las fuentes, puede hojear los siguientes extractos y encontrar la opción adecuada más rápido:
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
fuente
La mejor documentación que he encontrado es la fuente .
He usado este SO Q&A para crear una compilación de depuración. Con esta compilación de depuración, puede ejecutar
java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version
.Desde el directorio con las fuentes, puede ejecutar (asumiendo que está usando Linux, Cygwin o similar):
O lo siguiente (que solo mira archivos
*.cpp
y*.hpp
):Luego mire los archivos fuente. Probablemente la mejor razón por la que no existe un documento que describa todas las opciones es que es mejor dejar algunas de estas opciones a quienes realmente entienden la JVM y la mejor manera de hacerlo es familiarizarse íntimamente con el código fuente.
Así, en las palabras (casi) de un gran maestro ,
use the source
!fuente
read the source
.