[Java lista] Tomcat - PermGen zabálás

Mariák Kálmán sirkalmi at gmail.com
2008. Dec. 20., Szo, 18:18:37 CET


Szervusztok!

Régóta szopok a Tomcat PermGen zabálásáva aminek szeretnék egyszersmind
véget vetni.
Kis nyomozás után azt találtam, hogy az alapértelmezett GC nem
szabadítja fel a PermGen memóriaterületen lévő, használaton kívüli
objektumokat. Megoldást is írnak, hogy hogyan lehet az alapértelmezett
GC-ét felülbírálni:
-XX:+UseConcMarkSweepGC 
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled

Így az alábbi JAVA_OPTS-el futtatom a Tomcatet:
JAVA_OPTS="-d64 -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled -Xmx1024m -XX:MaxPermSize=1024m
-Dcom.sun.management.jmxremote"

Azonban a probléma továbbra is fennál! Egy adott webapp-ot 20x
újraindítva a PermGen mérete 35.54 MB -ról felszökött 139 MB -ra.

Érdekesség, hogy a Tomcat leállításakor az alábbi üzenetet adja:
Please use CMSClassUnloadingEnabled in place of CMSPermGenSweepingEnabled in the future

A JAVA_OPTS-bő eltávolítottam a -XX:+CMSPermGenSweepingEnabled kapcsolót de a teszt eredményen nem változtatott semmit.

Mit ronthatok el? Jelenleg több tucat webapp-ot szolgál ki a Tomcat és a jövőben egyre több lesz. Az nem állapot, hogy ez miatt újra kelljen indítani az egész kiszolgálót.

A tesztelés során használt verziók:
Solaris 10
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) 64-Bit Server VM (build 11.0-b16, mixed mode)
Apache Tomcat 6.0.18

Válaszokat nagyon köszönöm!

--
sirkalmi




További információk a(z) Javalist levelezőlistáról