Действительно не всегда можно избавиться от невыгружаемых классов, тогда можно попробовать потюнинговать java. Например можно глянуть здесь:
http://java.sun.com/docs/performance/
Также есть простое и работающее решение от разработчиков SeamFramework (далее идут параметры для запуска виртуальной машины):
-Xms128m
-Xmx512m
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
-XX:+UseConcMarkSweepGC
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512m
-Xverify:none
p/s
Я уже про это писал в своем блоге (
http://intr13.ru/2008/12/01/33 and
http://intr13.ru/2008/12/06/56)