Imprimer tous les drapeaux JVM

96

J'ai trouvé un indicateur JVM intéressant:

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

Il imprime des centaines d'options différentes, dont je n'avais jamais entendu parler auparavant. Il imprime également les valeurs par défaut, ce qui permet de mieux diagnostiquer les comportements JVM. Un autre drapeau intéressant est:

-XX:+UnlockExperimentalVMOptions

Quelqu'un a-t-il connaissance d'une documentation expliquant chacun d'eux?

Sachin Bhansali
la source
La raison pour laquelle la ligne de commande n'est pas répertoriée dans la documentation est que, comme son nom l'indique, elle est là pour diagnostiquer la machine virtuelle. On peut supposer que les personnes qui déboguent le hotspot les connaissent probablement;)
Voo
1
ce lien explique ces options en bref et assez bien.
sactiw

Réponses:

35

Ne manquez pas non plus les -XX:+JVMCIPrintPropertiesoptions Graal JIT.

Avant de plonger dans les sources, vous pouvez parcourir les extraits suivants et trouver plus rapidement l'option appropriée:

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

Andriy Plokhotnyuk
la source
15

La meilleure documentation que j'ai trouvée est la source .

J'ai utilisé ce SO Q&A pour créer une version de débogage. Avec cette version de débogage, vous pouvez exécuter java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version.

Depuis le répertoire avec les sources, vous pouvez exécuter (en supposant que vous utilisez Linux, Cygwin ou autre):

grep -FR 'UnlockExperimentalVMOptions' hotspot/

Ou, ce qui suit (qui ne regarde *.cppque les *.hppfichiers et ):

find hotspot/ -name '*.[ch]pp' -exec grep -F 'UnlockExperimentalVMOptions' {} +

Regardez ensuite les fichiers source. La meilleure raison pour laquelle il n'y a probablement pas de document décrivant toutes les options est que certaines de ces options sont mieux laissées à ceux qui comprennent vraiment la JVM et la meilleure façon de le faire est de se familiariser intimement avec le code source.

Ainsi, les mots (presque) d'un grand maître , use the source!

Dan Cruz
la source
1
La source est par définition une documentation parfaite du programme. Voir aussi codinghorror.com/blog/2012/04/…
Pyrolistical
@Pyrolistical Merci pour le lien; bonne lecture et je ne connaissais pas Jeff Atwood récemment blogué read the source.
Dan Cruz