Pregunta

Sé qué es PermGen, para qué se utiliza, por qué falla, cómo aumentarlo, etc.

Lo que no sé es qué significa realmente PermGen. Permanente ... Gen ... ¿algo?

¿Alguien sabe qué significa realmente PermGen?

¿Fue útil?

Solución

Generación permanente. Los detalles son, por supuesto, específicos de la implementación.

Brevemente, contiene los objetos Java asociados con clases y cadenas internados. En la implementación del cliente de Sun con el uso compartido, classes.jsa se asigna en 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 tenured.

Otros consejos

PermGen es utilizado por la JVM para mantener las clases cargadas. Puede aumentarlo usando:

-XX:MaxPermSize=384m

si está utilizando Sun JVM u OpenJDK.

Entonces, si obtiene una excepción OutOfMemoryException: PermGen, debe hacer que PermGen sea más grande o podría tener problemas con el cargador de clases.

Generación permanente. Consulte la guía de ajuste del GC para obtener más detalles. en el recolector de basura.

No coincide realmente con la pregunta original, pero puede ser que alguien lo encuentre útil. PermGen es de hecho un área en la memoria donde Java solía mantener sus clases. Entonces, muchos de nosotros nos hemos encontrado con OOM en PermGen, si hubo, 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 por defecto (o más precisamente, limitada por la cantidad de memoria nativa, dependiendo de la disponibilidad de memoria virtual de 32 o 64 bits jvm y OS) . 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 significa Generación permanente .

Aquí hay una breve reseña en DDJ

Si no recuerdo mal, el gen significa generación, como en un recolector de basura generacional (que trata los objetos más jóvenes de manera diferente a la mitad de la vida y los objetos "permanentes"). El principio de localidad sugiere que los objetos creados recientemente serán eliminados primero.

Permgen significa Generación Permanente. Es una de las áreas de memoria JVM. Forma parte de Heap con un tamaño fijo mediante el uso de un indicador llamado 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. Entonces nombre permgen es optar por eso. Pero más tarde, apareció la carga dinámica de clases, pero el nombre no cambió. Pero con Java 8 , también han abordado ese problema. Ahora permagen fue renombrado como MetaSpace con tamaño de memoria dinámica.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top