119 votes

Imprimer tous les drapeaux de la JVM

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

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

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

-XX:+UnlockExperimentalVMOptions

Quelqu'un connaît-il une documentation qui explique chacun d'entre eux ?

5 votes

0 votes

La raison pour laquelle la ligne de commande n'est pas mentionnée dans la documentation est que, comme son nom l'indique, elle est là pour diagnostiquer la VM. On peut supposer que les personnes qui déboguent Hotspot les connaissent probablement ;)

1 votes

Ce enlace explique ces options en bref et assez bien.

49voto

Andriy Plokhotnyuk Points 3309

Ne manquez pas non plus -XX:+JVMCIPrintProperties pour les options de Graal JIT.

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

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

16voto

Dan Cruz Points 7016

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

J'ai utilisé ce SO Q&A pour créer un build 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 .

À partir du répertoire contenant 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 que les *.cpp y *.hpp ) :

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

Regardez ensuite les fichiers sources. La meilleure raison pour laquelle il n'existe pas un document unique décrivant toutes les options est probablement 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.

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

1 votes

La source est par définition une documentation parfaite du programme. Voir aussi codinghorror.com/blog/2012/04/

0 votes

Merci pour le lien, c'est une bonne lecture. Je ne savais pas que Jeff Atwood avait récemment publié un blog sur le sujet. read the source .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X