tomcat && outOfMemory
От: inopressa Россия  
Дата: 04.01.09 07:22
Оценка:
работаю с Томкатом из под Идеи. Проект на JSF. Регулярно (после нескольких деплоев) вываливается с OutOfMemoryException. PemGemSpace error.

Памяти добавил, вываливаться стало чуть реже. Куда копать?
... << RSDN@Home 1.2.0 alpha rev. 787>>
Re: tomcat && outOfMemory
От: AVM Россия  
Дата: 04.01.09 09:01
Оценка: +1
Здравствуйте, inopressa, Вы писали:

I>работаю с Томкатом из под Идеи. Проект на JSF. Регулярно (после нескольких деплоев) вываливается с OutOfMemoryException. PemGemSpace error.


I>Памяти добавил, вываливаться стало чуть реже. Куда копать?

PemGemSpace — специальная область памяти отвечающая за хранение классов. Когда ты делаешь undeploy, некоторые классы твоего приложения могут не выгружаться class loader-ом. Смотри профайлером, какие именно классы не выгружаются. Например, такая проблема может возникать при использовании commons-logging.
Как вариант решения проблемы, использовать class loader сервера вместо class loader-а приложения. Подробности смотри в доке на Томкэт.
Re[2]: tomcat && outOfMemory
От: Partisan  
Дата: 04.01.09 10:38
Оценка: -1 :)
Здравствуйте, AVM, Вы писали:

AVM>Здравствуйте, inopressa, Вы писали:


I>>работаю с Томкатом из под Идеи. Проект на JSF. Регулярно (после нескольких деплоев) вываливается с OutOfMemoryException. PemGemSpace error.


I>>Памяти добавил, вываливаться стало чуть реже. Куда копать?

AVM>PemGemSpace — специальная область памяти отвечающая за хранение классов. Когда ты делаешь undeploy, некоторые классы твоего приложения могут не выгружаться class loader-ом. Смотри профайлером, какие именно классы не выгружаются. Например, такая проблема может возникать при использовании commons-logging.
AVM>Как вариант решения проблемы, использовать class loader сервера вместо class loader-а приложения. Подробности смотри в доке на Томкэт.

Объяснение неправильное. Да и вопрос тоже. На фига использовать IDEA, непонятно. Хотя проблема не имеет отношения к IDEA.
В общем, не хватает размера области памяти PermGen. Решение:
— увеличить его. Поиском в google по слову PermGen можно найти рецепты, в частности подходящий:
настройка PermGen
Что такое PermGen — см. в документации по JVM.
Посмотреть, сколько памяти сейчас используется в PermGen, можно программой jconsole и др.
— использовать JVM, в которой нету PermGen, а именно Oracle JRockit (ранее BEA JRockit).
Re[3]: tomcat && outOfMemory
От: AVM Россия  
Дата: 04.01.09 10:47
Оценка: +1
Здравствуйте, Partisan, Вы писали:

P>Здравствуйте, AVM, Вы писали:


AVM>>Здравствуйте, inopressa, Вы писали:


I>>>работаю с Томкатом из под Идеи. Проект на JSF. Регулярно (после нескольких деплоев) вываливается с OutOfMemoryException. PemGemSpace error.


I>>>Памяти добавил, вываливаться стало чуть реже. Куда копать?

AVM>>PemGemSpace — специальная область памяти отвечающая за хранение классов. Когда ты делаешь undeploy, некоторые классы твоего приложения могут не выгружаться class loader-ом. Смотри профайлером, какие именно классы не выгружаются. Например, такая проблема может возникать при использовании commons-logging.
AVM>>Как вариант решения проблемы, использовать class loader сервера вместо class loader-а приложения. Подробности смотри в доке на Томкэт.

P>Объяснение неправильное. Да и вопрос тоже. На фига использовать IDEA, непонятно. Хотя проблема не имеет отношения к IDEA.

P>В общем, не хватает размера области памяти PermGen. Решение:
P>- увеличить его. Поиском в google по слову PermGen можно найти рецепты, в частности подходящий:
P>настройка PermGen
P>Что такое PermGen — см. в документации по JVM.
P>Посмотреть, сколько памяти сейчас используется в PermGen, можно программой jconsole и др.
P>- использовать JVM, в которой нету PermGen, а именно Oracle JRockit (ранее BEA JRockit).
Увеличение размера perm gen просто отстрочит вылет с out of memory, но не решит проблему. Надо внимательно смотреть какие классы не выгружаются после undeploy приложения.
Re[4]: tomcat && outOfMemory
От: Partisan  
Дата: 04.01.09 11:00
Оценка:
Здравствуйте, AVM, Вы писали:

AVM>Увеличение размера perm gen просто отстрочит вылет с out of memory, но не решит проблему. Надо внимательно смотреть какие классы не выгружаются после undeploy приложения.


Увеличение размера (параметр -XX:MaxPermSize) сделает такие ситуации значительно реже, что само может решить проблему. Другие параметры, рекомендуемые в указанной мной статье, заставляют PermGen охватываться действием GC. Вообще-то я сам их не применял, но одно MaxPermSize помогало, и кроме того, я иногда пользовался, в основном для отладки, BEA JRockit (на который обратил внимание после того как увидел эту ошибку OutOfMemoryError).
Какие классы не выгружаются — тоже можно посмотреть (вдруг это следствие ошибки в программе), но может оказаться, что с этим ничего сделать нельзя, потому что переполнение области PermGen может быть и без ошибок.
Re[5]: tomcat && outOfMemory
От: intr13 Россия  
Дата: 04.01.09 12:57
Оценка:
Действительно не всегда можно избавиться от невыгружаемых классов, тогда можно попробовать потюнинговать java. Например можно глянуть здесь: http://java.sun.com/docs/performance/

Также есть простое и работающее решение от разработчиков SeamFramework (далее идут параметры для запуска виртуальной машины):
-Xms128m
-Xmx512m
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
-XX:+UseConcMarkSweepGC
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512m
-Xverify:none

p/s
Я уже про это писал в своем блоге (http://intr13.ru/2008/12/01/33 and http://intr13.ru/2008/12/06/56)
Re: tomcat && outOfMemory
От: GarryIV  
Дата: 04.01.09 23:13
Оценка: +1
Здравствуйте, inopressa, Вы писали:

I>работаю с Томкатом из под Идеи. Проект на JSF. Регулярно (после нескольких деплоев) вываливается с OutOfMemoryException. PemGemSpace error.


I>Памяти добавил, вываливаться стало чуть реже. Куда копать?


Не выгружаются классы JSF — проходили, решения не нашли. Так что увеличивай пермген и перезагружай томкат время от времени.
WBR, Igor Evgrafov
Re: tomcat && outOfMemory
От: Blazkowicz Россия  
Дата: 05.01.09 15:35
Оценка:
Здравствуйте, inopressa, Вы писали:

I>работаю с Томкатом из под Идеи. Проект на JSF. Регулярно (после нескольких деплоев) вываливается с OutOfMemoryException. PemGemSpace error.

I>Памяти добавил, вываливаться стало чуть реже. Куда копать?

Мне ещё не удалось увидеть хотя бы один opensource J2EE сервер\контейнер, который бы не имел проблемы с редеплоем на горячую. И, на сколько я знаю, у томката с этим хуже всего. Так что единственный вариант это полностью перезапускать JVM/Томкат.
Re[2]: tomcat && outOfMemory
От: Partisan  
Дата: 06.01.09 10:17
Оценка:
Здравствуйте, Blazkowicz, Вы писали:


B>Мне ещё не удалось увидеть хотя бы один opensource J2EE сервер\контейнер, который бы не имел проблемы с редеплоем на горячую. И, на сколько я знаю, у томката с этим хуже всего. Так что единственный вариант это полностью перезапускать JVM/Томкат.



Другие варианты уже описали. В частности, использование JRockit полностью устраняет ошибку OutOfMemoryError ввиду отсутствия PermGen. Ошибка действительно обычно возникает при отладке (то есть при многократных запусках и остановках приложения).
Re[3]: tomcat && outOfMemory
От: Blazkowicz Россия  
Дата: 06.01.09 10:26
Оценка:
Здравствуйте, Partisan, Вы писали:

P>Другие варианты уже описали. В частности, использование JRockit полностью устраняет ошибку OutOfMemoryError ввиду отсутствия PermGen. Ошибка действительно обычно возникает при отладке (то есть при многократных запусках и остановках приложения).

Ох, я сильно, сомневаюсь, что отсутствие PermGen решает проблему. У меня IBM JVM, тоже без PermGen. Но после десятка редеплоев все равно перестаёт деплоить вообще. Только вместо понятного OutOfMemoryError:PermGen имеем какое-нибудеь идиотское внутреннее исключение сервера. Проблема никуда не исчезла, просто видоизменилась.
Re[2]: tomcat && outOfMemory
От: Donz Россия http://donz-ru.livejournal.com
Дата: 06.01.09 14:49
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Не выгружаются классы JSF — проходили, решения не нашли. Так что увеличивай пермген и перезагружай томкат время от времени.

Не только, мы вообще не используем JSF, но такая ошибка есть.
Кстати, заметил, что при одинаковых настройках томката в ИДЕА и отдельного томката, последний падает гораздо реже.
Re: tomcat && outOfMemory
От: Nicht Россия  
Дата: 11.01.09 09:51
Оценка:
Здравствуйте, inopressa, Вы писали:

I>работаю с Томкатом из под Идеи. Проект на JSF. Регулярно (после нескольких деплоев) вываливается с OutOfMemoryException. PemGemSpace error.


I>Памяти добавил, вываливаться стало чуть реже. Куда копать?


Это набившие оскомину orphaned classloaders
Автор: Nicht
Дата: 13.12.06
.
Re: tomcat && outOfMemory
От: Аноним  
Дата: 18.01.09 21:15
Оценка:
Насколько я понимаю такое — результат использования log4j
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.