发现了一个有趣的 JVM 标志:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
它会打印出我之前从未听说过的数百个选项。同时,它还会打印出默认值,这有助于更好地诊断JVM行为。 另一个有趣的标志是:
-XX:+UnlockExperimentalVMOptions
有没有人知道任何解释每个选项的文档?
发现了一个有趣的 JVM 标志:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
它会打印出我之前从未听说过的数百个选项。同时,它还会打印出默认值,这有助于更好地诊断JVM行为。 另一个有趣的标志是:
-XX:+UnlockExperimentalVMOptions
有没有人知道任何解释每个选项的文档?
-XX:+JVMCIPrintProperties
。我找到的最好的文档是源代码。
我使用了这个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并且最好的方式是熟悉源代码的人去处理。
所以,用一个伟大的 大师 的话说, 使用源代码
!