Wiederkehrendes "PermGen" in Tomcat 6
Bekomme ich immer eine "PermGen" Fehler auf meinem Tomcat 6 server.
Ich wissen, welche Anwendung das problem verursacht, aber ich bin nicht sicher, warum es ist, dies zu tun. Die Anwendung mit MySQL 5 und läuft auf JDK 6.
Gibt es irgendwelche tools/Vorschläge zur Diagnose oder zu analysieren und das zugrunde liegende Problem(en) mit der jeweiligen Anwendung?
Dank
InformationsquelleAutor der Frage Berek Bryan | 2009-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den PermGen wird verwendet zum speichern von Klassen-Definitionen und die Internierten string-pool. Der code kann in der Füllung (wenn er ruft intern unnötig), aber wahrscheinlicher ist, dass der Standard ist unterdimensioniert für Ihre Anwendung.
Dies ist, weil Tomcat geladen werden, die neuen Klassen jedes mal, wenn Sie bereitstellen, einen KRIEG-oder, wenn Sie in einer Entwicklungsumgebung, jedes mal beim Bearbeiten einer JSP. Diese sollten schließlich bereinigt, aber in einer aktiven Entwicklungsumgebung können Sie haben Perioden, wo es sowohl alte und neue Instanzen geladen. Oder, wenn Sie in einer Produktionsumgebung und haben eine große web-app können Sie brauchen einfach mehr Platz.
Um die permgen-Größe, verwenden Sie
-XX:MaxPermSize=SIZE
Den folgenden links können hilfreich sein: tuning GC (dies ist die 1.5-edition), GC-FAQ (1.4.2 edition), Hotspot-VM-Optionen (das ist glaube ich 1.6)
InformationsquelleAutor der Antwort kdgregory
Versuchen Sie die folgenden JVM-switches:
Erhöhen Sie den permgen-Speicherplatz mit
-XX:MaxPermSize
nur verzögert das problem.Finden Sie in diesem Kommentar:
Wie man mit “java.lang.OutOfMemoryError: PermGen space" - Fehler
Indirekt wies mich auf diese beiden Beiträge: problemLösung
InformationsquelleAutor der Antwort opyate
versuchen Sie dies : IN Linux-Maschinen
export JAVA_OPTS="-XX:PermSize=128m"
InformationsquelleAutor der Antwort Ganesh Tripathi
Ich denke, Sie haben vielleicht viele JSPs in Ihrer Anwendung. Es ist ein bekanntes Problem in der tomcat-Neustart, wo eine bereitgestellte Anwendung mit vielen JSPs Ursachen der PermGen Probleme, weil tomcat kompiliert Sie und lädt alle Klassen wieder. Die Erhöhung der Größe wie bereits erwähnt in der früheren post sollen helfen.
InformationsquelleAutor der Antwort
Ich bin damit einverstanden, dass die Erhöhung der permgen space mit -XX:MaxPermSize nur verzögert das problem. Ich habe versucht, die Erhöhung der permgen und danach habe ich angefangen immer die gleiche Fehlermeldung, nachdem ich die gesendet mehr Anzahl der requests auf meinem server.
Zusätzliche flags wie -XX:+CMSClassUnloadingEnabled vorgeschlagen wird, obwohl es sinkt die Leistung etwas.
InformationsquelleAutor der Antwort Fun With Puzzles
Ich habe gesehen, viele von permgen-Fehler beim tomcat neu geladen wird nach einer code-änderung bei der Verwendung von hibernate und spring, ich denke seine wegen der logger/ehcache Instanzen nicht ordnungsgemäß heruntergefahren.
InformationsquelleAutor der Antwort Theresa Forster