Kürzlich Unser Produktionsserver: Tomcat6 wird häufig hängen und folgende Fehlermeldung "java.lang.OutOfMemoryError: PermGen Raum", die Windows 2003 Server ausgeführt wird mit 4 GB RAM. 25 Anwendungen laufen auf diesem Server, sieht so aus, als wäre es überlastet, aber es funktionierte vorher gut. Ich versuchte Speicherlecks zu bereinigen, wie das Schließen von DB-Verbindungen, und erhöhte den Heapspeicher mit JAVA_OPTS. Trotzdem konnte ich die genaue Ursache nicht finden. Auch unser Tomcat6 war nicht mit einer Manager-Anwendung konfiguriert, daher konnte ich keine Speicher-/Zustandsprüfungen durchführen. Bitte führe mich, um das zu lösen.Tomcat6 wird häufig wegen: java.lang.OutOfMemoryError: PermGen Raum
Antwort
Sie müssen den PermGen Raum erhöhen Bearbeitung Ihrer JAVA_OPTS
und mit der Option XX: MaxPermSize (zum Beispiel -XX:MaxPermSize=1024m
). Das Vergrößern der Zwischenspeichergröße (Xmx) ist in Ihrem Fall nicht sinnvoll.
Ich schlage vor, auch die Verwendung eines Monitoring-Tool (APM) wie Glowroot die Speichernutzung zu untersuchen, und passen Sie Ihren JAVA_OPTS
nach Bedarf.
Weitere Informationen über den Zweck des PermGen Raum und seine Garbage Collection-Mechanismus, Blick auf diese Antwort: https://stackoverflow.com/a/5387423/3260495
Danke @Robert Hume, aber ich habe bereits MaxPermSize in JAVA_OPTS hinzugefügt mit folgendem Satz "JAVA_OPTS =% JAVA_OPTS% -Xms1024m -Xmx1024m -XX: MaxPermSize = 1024m -XX: + CMSClassUnloadingEnabled -XX: + CMSPermGenSweepingEnabled -server ". Aber immer noch das Problem, Gibt es trotzdem zu verfolgen, ob Tomcat-Instanz wählen Sie MaxPermSize oder nicht? APM wäre eine gute Idee, ich werde versuchen, dass – Vic
Angesichts der Tatsache, dass Sie nicht den Tomcat Manager haben, können Sie das '-XX: + PrintCommandLineFlags' Argument zu 'JAVA_OPTS' hinzufügen, starten Sie den Server neu und überprüfen Sie dann die' logs/catalina .out' Datei: Sie sollten eine Zeile sehen, die alle Befehlszeilen Flags enthält, die Sie mit 'JAVA_OPTS' angegeben haben. –
Dank @Robert Hume, auch nach dem Hinzufügen von PrintCommandLine-Argument zu 'JAVA_OPTS' auch ich bekomme keine Details in den Protokollen. nur ein Gedanke, vorerst, gibt es eine Möglichkeit zu finden, ob der Tomcat läuft oder nicht?, zum Beispiel Ping von verschiedenen Server und E-Mail-Benachrichtigung, wenn Tomcat reagiert nicht (wie URL-Content-Monitor), zumindest können wir sofortige Aktion erhalten, während der Server hängen bleibt – Vic
- 1. java.lang.OutOfMemoryError: PermGen Raum: java Reflexion
- 2. java.lang.OutOfMemoryError: PermGen Raum in tomcat mit Eclipse
- 3. Android Robolectric Gradle - java.lang.OutOfMemoryError: PermGen Raum
- 4. „java.lang.OutOfMemoryError: PermGen Raum“ in Maven bauen
- 5. java.lang.OutOfMemoryError: PermGen Speicherplatzfehler
- 6. java.lang.OutOfMemoryError: PermGen Raumfehler mit Jetty
- 7. OutOfMemoryError: PermGen Raum - XX: MaxPermSize funktioniert nicht
- 8. Wie verhindert man java.lang.OutOfMemoryError: PermGen Space?
- 9. Permgen Space vs Meta-Raum
- 10. Debug Eclipse-Plugin-Projekt - PermGen Raum, nicht genügend Speicher Fehler
- 11. Wie stelle ich sicher, dass Tomcat6 CATALINA_OPTS unter Windows liest?
- 12. Spark-Anwendung - Java.lang.OutOfMemoryError: Java-Heap-Raum
- 13. Wie programmiere ich programmatisch meine PermGen-Speicherplatznutzung?
- 14. Wird Objektspott häufig verwendet?
- 15. PyCharm wird häufig eingefroren
- 16. Erhöhung von PermGen Speicherplatz für Jenkins/Gradle
- 17. Wird HMAC häufig falsch implementiert?
- 18. Node.JS-Server wird häufig deaktiviert?
- 19. Tomcat wird mit CATALINA_HOME in/usr/share/tomcat6 und CATALINA_BASE in/var/lib/tomcat6 installiert
- 20. Internierte Strings nicht in Permgen?
- 21. tomcat6 sqlnet Verschlüsselungsfehler
- 22. Tomcat auf Produktionsserver, PermGen und redeploys
- 23. Wie Tomcat6 Manager-Anwendung
- 24. log4j mit Tomcat6
- 25. Java.lang.OutOfMemoryError: kann keinen neuen nativen Thread erstellen -Linux
- 26. Wie wird häufig geänderter Produktionscode verwaltet?
- 27. Warum wird Kerberos häufig mit Openam verwendet?
- 28. Warum wird Java häufig für Unternehmensanwendungen verwendet?
- 29. Welcher Namespace für Details wird häufig verwendet?
- 30. Wird Speicher für String häufig neu zugewiesen?
PermGen wird am häufigsten mit Klassendefinitionen zugeordnet sind (und mit bestimmten älteren XML-Parser, IIRC). Möglicherweise möchten Sie explizit mehr PermGen-Speicherplatz zuweisen, da Sie 25 verschiedene Anwendungen ausführen (wahrscheinlich jeweils mit leicht unterschiedlichen Versionen der verschiedenen unterstützenden Bibliotheken). Siehe http://StackOverflow.com/questions/3003855/increase-permgen-space – Gus