打印所有JVM标志

118

发现了一个有趣的 JVM 标志:

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

它会打印出我之前从未听说过的数百个选项。同时,它还会打印出默认值,这有助于更好地诊断JVM行为。 另一个有趣的标志是:

-XX:+UnlockExperimentalVMOptions

有没有人知道任何解释每个选项的文档?


5
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html - user1329572
命令行未在文档中列出的原因是,因为正如其名称所示,它用于诊断虚拟机。可以假设调试 hotspot 的人员可能已经知道它们 ;) - Voo
1
这个链接简要而清晰地解释了这些选项。 - sactiw
2个回答

47

15

我找到的最好的文档是源代码

我使用了这个SO问答来创建一个调试版本。通过这个调试版本,你可以运行java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -XX:+PrintFlagsWithComments -version命令。

在源代码目录下,你可以执行以下命令(假设你正在使用Linux,Cygwin或类似系统):

grep -FR 'UnlockExperimentalVMOptions' hotspot/

或者,以下仅查看 *.cpp*.hpp 文件的代码:

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

接着查看源文件。为什么没有一个文档来描述所有选项的最好原因可能是因为其中一些选项最好留给那些真正了解JVM并且最好的方式是熟悉源代码的人去处理。

所以,用一个伟大的 大师 的话说, 使用源代码!


1
源代码在定义上是程序的完美文档。另请参阅http://www.codinghorror.com/blog/2012/04/learn-to-read-the-source-luke.html。 - Pyrolistical
@Pyrolistical 感谢分享链接,很棒的阅读材料。我不知道Jeff Atwood最近也写了关于“读源码”的博客。 - Go Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接