Java8中热点选项的改进文档


引入的小但受欢迎的特性之一Oracle's HotSpot执行情况Java 8是添加了许多常见的热点Java launcherjava)的选项/标志launcher's documentation。过去,adeveloper甚至对一些相当普通的东西感兴趣HotSpot JVM options要找到有关这些旗帜的“官方”文件,可能需要从多个不同的来源中寻找。这些来源包括前面提到的Java launcher文档,也包括其他所有资源,如Troubleshooting Guide for Java SE 6 with HotSpot VM,Troubleshooting Guide for HotSpot VM (7),和Java 8 Troubleshooting Guide还有许多“非官方”来源记录了这些选项,例如books和the most complete list of -XX options for Java JVM

在从不同来源阅读HotSpot JVM选项时,需要注意的一个风险是,很容易开始阅读某个JVM选项,而没有意识到文档显式地针对HotSpot以外的JVM,例如JRockit或者IBM's JVM如果开发人员没有密切注意,。jRockit的文档可能特别容易引起误解,因为它带有Oracle URL和Oracle徽标。

的一个例子JRockit JVM选项文档被混淆为热点JVM选项文档是一个feedback comment在博文上How to Fix java.lang.OufOfMemoryError: Direct Buffer Memory通过引用“更正”作者关于默认JVM最大直接缓冲区限制的声明JRockit documentation(但是JRockit的默认值为0导致的行为与Hotspot的默认值也为0非常不同)。在另一个不同但相关的示例中,StackOverflow线程上的海报Default for XX:MaxDirectMemorySize使same mistake and also references这个JRockit documentation尽管问题是“对于SUN JVM 1.6,xx:maxDirectMemorySize的默认值是什么?”在主要的Java launcher文档中记录了常见的热点选项,应该有助于减少这些常见的导致热点VM选项行为混乱的原因。

现在在Java launcher(可执行文件)中直接记录了热点JVM选项的两个示例java适用于这些选项)documentation-XX:+HeapDumpOnOutOfMemory-XX:MaxDirectMemorySize。的documentation for the Oracle HotSpot 8 Java launcher描述这两个示例选项,如下所示:

在Java launcher文档的先前版本中,没有描述这些以及其他几个在Java8之前可用的热点JVM选项,例如Java 7Java 6这是一个很小但值得欢迎的添加,它只是从旧版本迁移到Java 8的一长串原因中的一小部分。