Я изучаю различные варианты вокруг сборки "мусора" на Java 6 18 VM и хотел бы некоторые указатели.
Мы запускаем наше приложение на JBoss, и иногда существуют печально известные ошибки PermGen во время, повторно развертывается. Существует большой конфликт и устаревшая информация в Интернете о лучшем способе решить или смягчить эту проблему.
Из того, что я вижу, следующее корректно:
У меня есть два вопроса, следующие из этого:
CMSClassUnloadingEnabled
и CMSPermGenSweepingEnabled
вошедший это? Из того, что я вижу CMSClassUnloadingEnabled
заменяет или неявно включает CMSPermGenSweepingEnabled
. Любой из них помогает с вышеупомянутой проблемой?К сожалению, ответы таковы:
Основная проблема заключается в том, что GC не будет собирать мусор в сильно достижимый объект. Вам нужно выяснить, почему эти старые загрузчики классов приложений все еще доступны после передислокации... и устранить утечку.
Как вариант, откажитесь от горячей передислокации на производственных серверах или чаще перезапускайте веб-контейнер (например, JBoss).
Долгое, но хорошее чтение: http://victor-jan.blogspot.com/2010/05/classloader-leaks-dreaded.html Короче говоря, это разрешимо. Непросто, но решаемо.