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