Java VM не распознает -XX:G1YoungGenSize?
Я использую сборщик мусора G1 с JDK1.7.0, но виртуальная машина не распознает опцию 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 (снимок от 19 августа 2010 г.).
Кто-нибудь знает, что может быть причиной этой ошибки?
1 ответ
Похоже, что изменилось около 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) должны определять начальный максимальный размер.