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) должны определять начальный максимальный размер.

Другие вопросы по тегам