March 5th, 2007
Das permgen space-Problem unter JBoss
Unter JBoss AS 4.x hat man leider mit dem Problem zu kämpfen, dass nach mehreren Deployments der PermGen-Space der JVM voll ist:
java.lang.OutOfMemoryError: PermGen space
Dies ist leicht durch ein kleines Patch zu beheben. In der Datei ${jboss.root}/bin/run.bat bzw. ${jboss.root}/bin/run.bat zu den JAVA_OPTS folgende Optionen hinzufügen:
-XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128m
So wird aus dieser Zeile:
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
folgende:
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m
-XX:+CMSPermGenSweepingEnabled -XX:MaxPermSize=128m
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
Der PermGenSpace liegt standardmäßig bei 64m, was für den feisten JBoss AS offensichtlich etwas knapp bemessen ist. Hierüber wird dieser Wert auf 128m erhöht.
Trotzdem geht der JBoss mit dem PermGenSpace offensichtlich etwas schluderig um, denn auch bei 128m ist dieser nach einem Tag Intensiver Entwicklung voll, und der Server muss neu gestartet werden. Deutet auf ein Speicherleck hin…


2 Responses to “Das permgen space-Problem unter JBoss”
Speicherleck.
Es gibt generell zwei Quellen. Einerseits String.intern(), was aber hier vermutlich nicht der Fall ist.
Andererseits ClassLoader-Probleme: insbesondere die Kombination Hibernate/Tomcat/SunJVM (plus CGLIB, die durch Hibernate eingebunden wird) erzeugt eine Situation, in der
1) Tomcat Klassen per Webapp lädt
2) Beim Reload einer Webapp der alte ClassLoader weggeworfen und ein neuer erstellt wird, und dadurch alle Klassen neu geladen werden
3) CGLIB aber eine Referenz auf alle ClassLoaders behält, und die alten Klassen daher nicht aufgeräumt werden.
Die Folge: PermGen wird mit alten, nutzlosen Klassendaten vollgeräumt. Irgendwann gibt’s dann den effektiven Absturz.
Angeblich hat die BEA JRockit-JVM das Problem nicht. Angeblich haben auch andere Servlet-Container (e.g. Jetty) das Problem nicht.
March 28th, 2007 at 12:07
6b915add4135405b8e39c1bb3887b5f7…
6b915add4135405b8e39c1bb3887b5f7…
April 5th, 2008 at 08:21
Leave a Reply