Ich habe eine Tomcat6 läuft auf einem Windows2003-Rechner. Ich habe 2 Grails-Apps auf diesem Server installiert und merkte bald, dass nach dem Deployment mit einem klassischen PermGen-Fehler alles abstürzte.Wie stelle ich sicher, dass Tomcat6 CATALINA_OPTS unter Windows liest?
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
...
So fand ich eine gemeinsame Lösung für dieses Problem: Erhöhen Heap und PermGen Raum mit:
set CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m"
in C Hinzugefügt: \ Apache-tomcat-6.0.26 \ bin \ catalina.bat. Leider hat das nicht funktioniert, aber das Problem ist, dass ich nicht sicher bin, ob Tomcat es aufhebt. Ich habe verschiedene Protokolle überprüft, aber diese Optionen werden nie ausgedruckt. Gibt es eine Möglichkeit, sie zu protokollieren und sicherzustellen, dass Tomcat sie gelesen hat?
EDIT: Ich habe versucht, die folgenden JVM-Optionen mit tomcat6w.exe hinzuzufügen:
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseConcMarkSweepGC
Und nichts geändert. Ich bekomme eine PermGen nach 2-3 Minuten Betriebszeit. Irgendeine andere Idee?
Prost! Mulone
Welche Java vm verwenden Sie? – Joelio
Guter Punkt: C: \ Programme \ Java \ jdk1.6.0_19 \ jre \ bin \ server \ jvm.dll – Mulone
Diese Art von Frage ist für Serverfault.com, denke ich. – Ither