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