打印所有 JVM 标志
找到一个有趣的JVM标志:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
它打印了数百种不同的选项,我以前从未听说过。它还打印默认值,这有助于更好地诊断 JVM 行为。另一个有趣的标志是:
-XX:+UnlockExperimentalVMOptions
有谁知道任何解释它们中的每一个的文档?
找到一个有趣的JVM标志:
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
它打印了数百种不同的选项,我以前从未听说过。它还打印默认值,这有助于更好地诊断 JVM 行为。另一个有趣的标志是:
-XX:+UnlockExperimentalVMOptions
有谁知道任何解释它们中的每一个的文档?
不要错过Graal JIT选项。-XX:+JVMCIPrintProperties
在深入研究来源之前,您可以浏览以下摘录并更快地找到合适的选项:
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
我找到的最好的文档是源代码。
我使用这个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的人,而最好的方法是熟悉源代码。
所以,用一位伟大大师的话(几乎)来说,!use the source