He instalado JDK 8 e intento ejecutar Eclipse. Recibo el siguiente mensaje de advertencia:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0
¿Cuáles son las razones para ignorar esta opción de VM?
Respuestas:
Las razones para ignorar este argumento es que la generación permanente se ha eliminado en HotSpot para JDK8 debido a los siguientes inconvenientes
El espacio de generación permanente (PermGen) se ha eliminado por completo y se reemplaza por un nuevo espacio llamado Metaspace. Las consecuencias de la eliminación de PermGen es que, obviamente, se ignoran los argumentos JVM de PermSize y MaxPermSize y nunca obtendrá un error java.lang.OutOfMemoryError: PermGen.
Ventajas de MetaSpace
Metaspace Tuning
El tamaño máximo de metaespacio se puede establecer con el indicador -XX: MaxMetaspaceSize, y el valor predeterminado es ilimitado, lo que significa que solo la memoria de su sistema es el límite. El indicador de ajuste -XX: MetaspaceSize define el tamaño inicial de metaspace. Si no especifica este indicador, el Metaspace cambiará de tamaño dinámicamente dependiendo de la demanda de la aplicación en tiempo de ejecución.
El cambio permite otras optimizaciones y características en el futuro
También se ha mejorado el rendimiento de GC. Mas detalle
fuente
Esta es una de las nuevas características de Java 8, parte de las Propuestas 122 de mejora de JDK :
La lista de todos los JEP que se incluirán en Java 8 se puede encontrar en la página de hitos de JDK8 .
fuente
El espacio de Generación Permanente (PermGen) se ha eliminado por completo y se reemplaza por un nuevo espacio llamado Metaspace. Las consecuencias de la eliminación de PermGen son que, obviamente, los argumentos JVM de PermSize y MaxPermSize se ignoran y nunca obtendrá un
java.lang.OutOfMemoryError
error: PermGen. El JDK 8 HotSpot JVM ahora está usando memoria nativa para la representación de metadatos de clase y se llama Metaspace. Leer más >>fuente
Porque se eliminó el espacio PermGen. La gestión de la memoria ha cambiado un poco.
java-8-permgen-metaspace
fuente
El espacio PermGen se reemplaza por MetaSpace en Java 8. Los argumentos JVM PermSize y MaxPermSize se ignoran y se emite una advertencia si está presente al inicio.
La mayoría de las asignaciones para los metadatos de la clase ahora se asignan fuera de la memoria nativa. * Las clases que se usaron para describir los metadatos de la clase se han eliminado.
La principal diferencia entre el antiguo PermGen y el nuevo MetaSpace es que no tiene que definir obligatoriamente el límite superior de uso de memoria. Puede mantener el límite de espacio MetaSpace ilimitado. Por lo tanto, cuando el uso de memoria aumenta, no obtendrá el error OutOfMemoryError. En cambio, la memoria nativa reservada se incrementa para llenar por completo el aumento del uso de memoria.
Puede definir el límite máximo de espacio para MetaSpace, y luego arrojará OutOfMemoryError: espacio de metadatos. Por lo tanto, es importante definir este límite con cautela, para que podamos evitar el desperdicio de memoria.
fuente
La implementación JVM de Oracle para Java 8 eliminó el modelo PermGen y lo reemplazó con Metaspace .
fuente