Блог об it, программировании и интернет-маркетинге

Делюсь наблюдениями и личным опытом в области программирования и интернет-маркетинга

Правим PermGen exceptions в Java проектах

Posted on | September 15, 2011 | No Comments

Исключения java.lang.OutOfMemoryError: PermGen space чаще всего видны ещё при запуске проекта, но также проблемы могут возникнуть “неожиданно”, на уже запущенном проекте, особенно если вы используете на своём сервере приложений функцию hot-deployment.
PermGem – Permanent Generation в основном используется для загрузки исполняемых классов ClassLoader. Максимальный объём PermGen памяти фиксируется при запуске VM и не может быть изменён на лету. Изначальное значение в HotSpot VM 64mb, но оно различно в зависимости от платформ и версий VM.
Hot-deployment реализуется через перезагрузку классов ClassLoader’ом (для каждого приложения он свой). После загрузки новой версии класса через какое-то время будет вызван Garbage Collector и освободит память под старой версией, однако тут могут возникнуть затруднения, которые предотвратят освобождение памяти. В конечном итоге они приведут к java.lang.OutOfMemoryError: PermGen space exception.
Самое простое решение увеличение объема PermGen памяти при запуске VM, добавляем для этого ключ
-XX:MaxPermSize=512m
Если вы используете Maven, то создаём, или добавляем в уже созданную, переменную окружения MAVEN_OPTS:
-XX:MaxPermSize=512m

SEO Community Ваау! News2.ru SMI2 Google Bookmarks I.ua Закладки Yandex Ruspace Web-zakladka Zakladok.net delicious БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong

Comments