java_opts increase java memory tomcat

java - increase - Recurrente "PermGen" en Tomcat 6



tomcat configure java memory (6)

Sigo recibiendo un error "PermGen" en mi servidor Tomcat 6.

Sé qué aplicación está causando el problema, pero no estoy seguro de por qué lo está haciendo. La aplicación usa MySQL 5 y se ejecuta en JDK 6.

¿Existen herramientas / sugerencias para diagnosticar o analizar los problemas subyacentes con la aplicación específica?

Gracias


PermGen se usa para almacenar definiciones de clase y el grupo de cadenas internas. Su código podría estar llenándolo (si llama a un interno innecesariamente), pero lo más probable es que el valor predeterminado sea demasiado pequeño para su aplicación.

Esto se debe a que Tomcat cargará nuevas clases cada vez que implemente un WAR, o, si está trabajando en un entorno de desarrollo, cada vez que edite un JSP. Esos eventualmente deberían limpiarse, pero en un entorno de desarrollo activo puede tener períodos en los que se carguen instancias antiguas y nuevas. O bien, si se encuentra en un entorno de producción y tiene una gran aplicación web, es posible que simplemente necesite más espacio.

Para establecer el tamaño de permgen, use -XX:MaxPermSize=SIZE

Los siguientes enlaces pueden ser útiles: tuning GC (esta es la edición 1.5), GC FAQ (edición 1.4.2), opciones de VM de Hotspot (creo que esto es 1.6)


Creo que puede tener muchas JSP en su aplicación. Existe un problema conocido en Tomcat en el que reiniciar una aplicación implementada con muchos JSP causa problemas con PermGen porque tomcat vuelve a compilar y volver a cargar todas estas clases. Aumentar el tamaño como se menciona en la publicación anterior debería ayudar.


He visto muchos errores permgen cuando tomcat se recarga después de un cambio de código cuando se usa hibernate y spring, creo que es debido a que las instancias logger / ehcache no se apagan correctamente.


Estoy de acuerdo en que aumentar el espacio permgen con -XX: MaxPermSize solo retrasa el problema. Traté de aumentar el permgen y después de eso comencé a recibir el mismo error después de que envié más solicitudes a mi servidor. Se sugieren indicadores adicionales como -XX: + CMSClassUnloadingEnabled, aunque disminuirá un poco el rendimiento.


intente esto: EN máquinas Linux

export JAVA_OPTS="-XX:PermSize=128m"