Sé qué es PermGen, para qué se usa, por qué falla, cómo aumentarlo, etc.
Lo que no sé es qué significa realmente PermGen. Permanente ... Gen ... algo?
¿Alguien sabe lo que realmente significa PermGen?
Sé qué es PermGen, para qué se usa, por qué falla, cómo aumentarlo, etc.
Lo que no sé es qué significa realmente PermGen. Permanente ... Gen ... algo?
¿Alguien sabe lo que realmente significa PermGen?
Respuestas:
Generación permanente. Por supuesto, los detalles son específicos de la implementación.
Brevemente, contiene los objetos Java asociados con clases y cadenas internas. En la implementación del cliente de Sun con el uso compartido activado, classes.jsa
se asigna la memoria para formar los datos iniciales, con aproximadamente la mitad de solo lectura y la mitad de copia en escritura.
Los objetos Java que son simplemente antiguos se mantienen en la Generación de tenencia.
La JVM utiliza PermGen para contener clases cargadas. Puedes aumentarlo usando:
-XX:MaxPermSize=384m
si está utilizando Sun JVM u OpenJDK.
Entonces, si obtiene una OutOfMemoryException: PermGen, necesita hacer que PermGen sea más grande o es posible que tenga problemas con el cargador de clases.
Generación permanente. Consulte la guía de ajuste de Java GC para obtener más detalles sobre el recolector de basura.
No coincide realmente con la pregunta original, pero puede ser que alguien la encuentre útil. PermGen es de hecho un área de la memoria donde Java solía mantener sus clases. Entonces, muchos de nosotros nos hemos encontrado con OOM en PermGen, si hubiera, por ejemplo, muchas clases.
Desde Java 8, el área de PermGen ha sido reemplazada por el área de MetaSpace, que es más eficiente y es ilimitada de forma predeterminada (o más precisamente, limitada por la cantidad de memoria nativa, dependiendo de la disponibilidad de memoria virtual del sistema operativo y jvm de 32 o 64 bits). Sin embargo, es posible ajustarlo de alguna manera, por ejemplo, especificando un límite máximo para el área. Puede encontrar más información útil en esta publicación de blog .
PermGen es sinónimo de generación permanente .
Aquí hay una breve propaganda sobre DDJ
Si mal no recuerdo, gen significa generación, como en un recolector de basura generacional (que trata los objetos más jóvenes de manera diferente a los objetos de mediana edad y "permanentes"). El principio de localidad sugiere que los objetos creados recientemente serán eliminados primero.
Permgen es sinónimo de generación permanente. Es una de las áreas de memoria de JVM. Es parte de Heap con un tamaño fijo mediante el uso de una bandera llamada MaxPermSize.
¿Por qué el nombre "PermGen"?
Este permgen fue nombrado en los primeros días de Java. Permgen mains mantiene todos los metadatos de las clases cargadas. Pero el problema es que una vez que se carga una clase, permanecerá en la JVM hasta que se cierre la JVM. Así que el nombre Permgen es optar por eso. Pero más tarde, la carga dinámica de clases entró en escena, pero el nombre no se cambió. Pero con Java 8 , también han abordado ese problema. Ahora permagen pasó a llamarse MetaSpace con tamaño de memoria dinámica.