После пары дней отладки мне удалось успешно повторно развернуть среднее и крупное веб-приложение на Tomcat 6.0.32 без каких-либо PermGen
утечек. Я видел падение PermGen
после его заполнения, а загрузчики классов были собраны мусором.
После долгих радостей я попытался сделать повторное развертывание приложения без утечек в нашей среде разработки, состоящей из Maven и плагина Jetty.
К сожалению, я, похоже, столкнулся с ограничением сервера, как показано на скриншоте ниже.
Снимок Yourkit http://img811.imageshack.us/img811/7320/jettyclassloaderbeanelr.png< /а>
Потоки запросов Jetty имеют сильную ссылку на BeanElResolver
, который, в свою очередь, имеет сильную ссылку на несколько классов из моего веб-приложения.
Я не нашел ссылки на то, как очистить эту информацию.
Как я могу удалить эту последнюю PermGen
утечку из моего приложения?
Обновлять:
Я сделал следующее, чтобы решить проблему, но безуспешно:
- обновлен до последней версии плагина Jetty (7.4.5 и 8.0.0.M3)
- использовал коллектор CMS:
-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled
Обновление 2:
- Я сообщил об этом как об ошибке в системе отслеживания проблем Jetty: maven-jetty- плагин: утечка PermGen из-за javax.el.BeanELResolver