[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