2010-08-23 22 views
6

Estoy utilizando el recolector de basura G1 con JDK1.7.0, pero la VM no reconoce la opción G1YoungGenSize. En concreto, cuando corro:Java VM no reconoce -XX: G1YoungGenSize?

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

me sale el siguiente error:

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

También he probado con un signo "+" antes G1YoungGenSize, como parte de la documentación G1 listas de esa manera :

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

Pero me sale el mismo error.

He intentado JDKs más antiguos, incluida la actualización 1.6 a la 21. Parece que G1YoungGenSize se reconoce a través de la actualización 20, y se rompe con 21 y hasta la última versión 1.7 (instantánea del 19 de agosto de 2010).

¿Alguien sabe lo que podría estar causando este error?

+0

¿Podría publicar el resultado de 'java -version'? –

+0

Claro. Funciona con: versión java "1.6.0_20" Java (TM) SE Runtime Environment (compilación 1.6.0_20-b02) Java HotSpot (TM) 64-Bit Server VM (compilación 16.3-b01, modo mixto) pero no funciona con ninguno de estos: java version "1.7.0-ea" Java (TM) sE Runtime Environment (build 1.7.0-ea-B106) Java HotSpot (TM) de 64 bits servidor de VM (build 19.0-b05, modo mixto) y versión java "1.6.0_21" Java (TM) SE Runtime Environment (build 1.6.0_21-b06) Java HotSpot (TM) Server VM (build 17.0 -b16, modo mixto) –

+0

Sin mirar el código fuente, mi suposición es que 'G1YoungGenSize' fue eliminado, quizás temporalmente. Las opciones '-XX' hacen eso. –

Respuesta

6

esto parece haber cambiado hace unos 6 meses:

6928065: G1: utilizar los parámetros de línea de comandos existentes para establecer el tamaño generación joven http://hg.openjdk.java.net/jdk7/jdk7/hotspot/rev/a1c410de27e4

Los cambios realizados por 1.6 aquí:

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

To be consistent with the other GCs, G1 should observe UseAdaptiveSizePolicy to decide whether to auto-tune the young generation size. NewSize/MaxNewSize (and also -Xmn) should dictate the initial max size.