Watching a new world…

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”

Sebastian Redl said:

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 said:

6b915add4135405b8e39c1bb3887b5f7…

6b915add4135405b8e39c1bb3887b5f7…

April 5th, 2008 at 08:21

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

klipal online pharmacy buy online cialis viagra online xanax cream for women order zyban online oxazepam buy alternative erection lorazepam cheap drugs 2003 tramadol tramadol market sales tramadol rx pills diazepam discount retail alternative to valium at gnc online drugstore tenuate order order levitra discount cialis buy the cheapest propecia online cheapest generic viagra online drugstore order cialis soft tabs over internet need no doctor cheapest levitra prices woman viagra soft tabs natural substitutes for viagra soft tabs online viagra natural levitra substitutes female cialis alternative