6

我在 JDK1.7.0 中使用 G1 垃圾收集器,但 VM 无法识别选项 G1YoungGenSize。具体来说,当我运行时:

java -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1YoungGenSize=512m ...

我收到以下错误:

Unrecognized VM option 'G1YoungGenSize=512m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

我还在 G1YoungGenSize 之前用“+”号尝试过,因为一些 G1 文档是这样列出的:

java -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+G1YoungGenSize=512m ...

但我得到同样的错误。

我尝试过较旧的 JDK,包括 1.6 更新 18 到 21。似乎 G1YoungGenSize 通过更新 20 被识别,并从 21 开始并通过最新的 1.7 构建(快照日期为 2010 年 8 月 19 日)。

有谁知道可能导致此错误的原因?

4

1 回答 1

6

这看起来在大约 6 个月前发生了变化:

6928065:G1:使用现有命令行参数设置年轻代大小 http://hg.openjdk.java.net/jdk7/jdk7/hotspot/rev/a1c410de27e4

此处为 1.6 所做的更改:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6928065

为了与其他 GC 保持一致,G1 应该观察 UseAdaptiveSizePolicy 来决定是否自动调整年轻代的大小。NewSize / MaxNewSize(以及 -Xmn)应该规定初始最大大小。

于 2010-08-29T11:29:42.950 回答