Erhöhen Sie den Permgenraum

88

Ich arbeite mit Tomcat 6.0 und während ich indiziere (nicht während ich Tomcat starte), habe ich einen Permgen Space Fehler.
Wie könnte ich diesen Raum vergrößern?

Vielen Dank

Blanca
quelle
Ich überprüfe ähnliche Fragen schon einmal, helfe mir aber nicht. Wohin geht -XX: NewSize = 2.125m?
Blanca

Antworten:

142

Sie können verwenden:

-XX:MaxPermSize=128m

um den Raum zu vergrößern. Dies verschiebt aber meist nur das Unvermeidliche.

Sie können auch die Speicherbereinigung für PermGen aktivieren

-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled

Normalerweise tritt dies bei vielen erneuten Bereitstellungen auf. Ich bin überrascht, dass Sie so etwas wie Indizierung verwenden. Verwenden Sie virtualvm oder jconsole, um den Perm-Bereich zu überwachen und zu überprüfen, ob er nach dem Aufwärmen der Indizierung abfällt.

Vielleicht sollten Sie in Betracht ziehen, zu einer anderen JVM wie der IBM JVM zu wechseln. Es hat keine permanente Generation und ist gegen dieses Problem immun.

Peter Tillemans
quelle
Vielen Dank!! Aber wo muss ich es aufschreiben? Ich denke in einem Flile hier: Tomcat / Conf Bin ich falsch?
Blanca
1
Für Tomcat können Sie eine Umgebungsvariable CATALINA_OPTS erstellen, deren Wert diese Optionen verkettet. Das Startskript fügt diese der Java-Befehlszeile hinzu, bevor Tomcat gestartet wird. Dies ist in der Tomcat-Konfiguration nicht möglich, da die JVM zu diesem Zeitpunkt bereits konfiguriert ist.
Peter Tillemans
2
Wenn es sich um FreeBSD handelt, fügen Sie die Optionen zur Datei /etc/rc.conf hinzu. Lesen Sie zuerst das Tomcat-Startskript, um den genauen Parameter zu sehen, nach dem gesucht wird.
Brian Knoblauch
3
In OpenJDK 7 ist CMSPermGenSweepingEnabled zugunsten von CMSClassUnloadingEnabled
Petr Gladkikh
12

Für Tomcat können Sie den permGem-Speicherplatz mithilfe von erhöhen

 -XX:MaxPermSize=128m

Dazu müssen Sie eine Datei mit dem Namen setenv.sh im Ordner tomcat / bin erstellen (falls noch nicht vorhanden) und die folgende Zeile einfügen

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

Referenz: http://wiki.razuna.com/display/ecp/Adjusting+Memory+Settings+for+Tomcat

Paroksh Saxena
quelle
1
export JAVA_OPTS="-XX:MaxPermSize=128m"arbeitete für mich mit Clojure + lein repl
Jeff
3

Sie können es auch über die VM-Argumente in Ihrer IDE erhöhen. In meinem Fall verwende ich Tomcat v7.0, das unter Eclipse ausgeführt wird. Doppelklicken Sie dazu auf Ihren Server (Tomcat v7.0). Klicken Sie auf den Link "Startkonfiguration öffnen". Gehen Sie zur Registerkarte "Argumente". Fügen Sie -XX: MaxPermSize = 512m zur Liste der VM-Argumente hinzu. Klicken Sie auf "Übernehmen" und dann auf "OK". Starten Sie Ihren Server neu.

user3375152
quelle
3

Wenn Sie herausgefunden haben, dass die Speichereinstellungen nicht verwendet wurden und um die Speichereinstellungen zu ändern, habe ich tomcat7w oder tomcat8w im Ordner \ bin verwendet. Dann sollte Folgendes angezeigt werden:

Katermonitor

Klicken Sie auf die Registerkarte Java und fügen Sie die Argumente hinzu. Starten Sie tomcat neu

Kevin STS
quelle
@ Jérémie BI hat nicht genug Reputationspunkt, um ein Bild direkt hinzuzufügen.
Kevin STS
0

Bei Debian-ähnlichen Distributionen setzen Sie dies ein /etc/default/tomcat[67]

der_do
quelle