Cam*_*han 6 java garbage-collection g1gc
我正在使用带有JDK1.7.0的G1垃圾收集器,但VM无法识别选项G1YoungGenSize.具体来说,当我跑:
java -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1YoungGenSize=512m ...
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Unrecognized VM option 'G1YoungGenSize=512m'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
我也在G1YoungGenSize之前尝试了一个"+"符号,因为一些G1文档以这种方式列出:
java -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+G1YoungGenSize=512m ...
Run Code Online (Sandbox Code Playgroud)
但我得到了同样的错误.
我已经尝试过较旧的JDK,包括1.6更新18到21.似乎G1YoungGenSize通过更新20识别,并从21开始和最新的1.7版本(2010年8月19日的快照)中断.
有谁知道可能导致此错误的原因是什么?
这看起来大约在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)应该指定初始最大大小.