Я пытаюсь создать классы и загрузить их во время выполнения.
Я использую объект ClassLoader
для загрузки классов. Поскольку я не хочу выходить из памяти PermGen
, время от времени я не ссылаюсь на загрузчик классов и создаю новую для загрузки новых классов, которые будут использоваться. Кажется, это работает нормально, и я не получаю из памяти PermGen
. Проблемы заключается в том, что, когда я делаю это, через некоторое время я получаю следующее сообщение об ошибке:Избежание превышения PermGen и превышения верхнего предела GC
java.lang.OutOfMemoryError: GC overhead limit exceeded
Так что мой вопрос, когда я должен ООН ССЫЛКИ загрузчик классов, чтобы избежать оба ошибок ?:
Должен ли я мониторинг в моем коде используется PermGen
, чтобы я не ссылался на загрузчик классов и вызывал System.gc()
, когда использование PermGen
близко к пределу?
Или мне следует придерживаться другого подхода?
Спасибо
Я использую jvisualvm для мониторинга использования кучи, максимальный размер составляет 1 Гб, а использование варьируется от 200 мб до 600 мб, поэтому оно далека от предела. – otonakav
@otonakav - возможно, есть некоторые проблемы с параметрами настройки GC. –