Я изучаю различные варианты сборки мусора на виртуальной машине Java 6 18 и хотел бы получить несколько указателей.
Мы запускаем наше приложение на JBoss, и время от времени возникают повторяющиеся ошибки PermGen при повторных развертываниях. В Интернете много противоречивой и устаревшей информации о том, как лучше решить эту проблему или смягчить ее.
Из что я вижу , верно следующее:
- Опции VM сами по себе не решат эту проблему , только отложите ее.
- Единственный надежный способ решить эту проблему - это исправить ошибки кодирования либо на самом Сервере приложений (маловероятно), либо в коде (нашем коде или сторонних библиотеках), работающем на Сервере приложений (скорее всего). Заполнение Permgen часто является результатом ссылок из объектов, загруженных загрузчиком классов приложения, на объекты, загруженные загрузчиком классов сервера приложений, что предотвращает сборку мусора загрузчиком классов приложения.
У меня есть два вопроса, вытекающих из этого:
- Правильно ли это?
- Где параметры VM
CMSClassUnloadingEnabled
и CMSPermGenSweepingEnabled
входят в это? Из того, что я вижу, CMSClassUnloadingEnabled
заменяет или неявно включает CMSPermGenSweepingEnabled
. Кто-нибудь из них помогает с вышеуказанной проблемой?