Tengo un Tomcat6 ejecutándose en una máquina con Windows2003. Implementé 2 aplicaciones de Grails en este servidor y pronto me di cuenta de que todo estaba fallando en algún momento después del despliegue con un error clásico de PermGen.¿Cómo asegurarse de que Tomcat6 lea CATALINA_OPTS en Windows?
java.lang.OutOfMemoryError: PermGen space
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
java.lang.ClassLoader.defineClass(ClassLoader.java:616)
org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.de
...
así que encontré una solución común para este problema: el aumento montón y espacio PermGen con:
set CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m"
Agregado a C: \ apache-tomcat-6.0.26 \ bin \ catalina.bat. Lamentablemente, esto no funcionó, pero el problema es que no estoy seguro de que Tomcat lo esté recogiendo. Revisé varios registros, pero estas opciones nunca se imprimen. ¿Hay alguna forma de registrarlos y asegurarse de que Tomcat los haya leído?
EDIT: He intentado añadir las siguientes opciones de JVM con tomcat6w.exe:
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
Y nada ha cambiado. Obtengo un permGen después de 2-3 minutos de actividad. ¿Alguna otra idea?
¡Salud! Mulone
¿Qué java vm estás usando? – Joelio
Buen punto: C: \ Archivos de programa \ Java \ jdk1.6.0_19 \ jre \ bin \ server \ jvm.dll – Mulone
Este tipo de pregunta es para serverfault.com, supongo. – Ither