Правим 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
Comments
Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/dezhik.ru/wp-includes/class-wp-comment-query.php on line 399