我正在使用带有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日的快照)中断。
有谁知道可能导致此错误的原因?
答案 0 :(得分: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)应该规定初始最大尺寸。