![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 2 Всего: 5 |
Каково состояние дел с решением проблемы OutOfMemoryError для Tomcat + Hibernate?
По-прежнему эта проблема никак не решается?
-------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Это у тебя во время горячего передеплоя?
Добавлено через 8 минут и 3 секунды может это? OutOfMemory issue -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Andrey1
А сколько у тебя памяти томкету отведено? и в какой ситуации выпало? |
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 2 Всего: 5 |
Спасибо. Попробую. Что-то подобное у меня было прописано... Добавлено через 3 минуты и 45 секунд
Выпадает при передиплое.... (NetBeans - организует - при сохранении файла). Старые VM параметры для Томкета уже сбил... Попробую новые свеже-посоветованные -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
Andrey1
Видимо у тебя много классов загружается при запуске, возможно динамически генерируемых (как из jsp), и они не влезают в отведенную под классы память perm generation. То есть надо выставить -XX:PermSize=<initial size> -XX:MaxPermSize=<maximum size> побольше. Добавлено через 6 минут и 58 секунд Можно еще добавить вот такой параметр -XX:PrintGCDetails чтобы вывести в консоль, как реально расходуется и освобождается память. Это сообщение отредактировал(а) Maksym - 4.12.2008, 17:38 |
|||
|
||||
| intr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.12.2005 Репутация: 2 Всего: 2 |
Рецепт пошел массы Действительно, скорее всего проблема в конфигурации сборщика мусора. --------------------
Исследователь бытия и по совместительству Java-developer |
|||
|
||||
| Shurr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 1 Всего: 7 |
Какой-то феерически самонадеянный рецепт. Вместо того, чтобы объяснить, как устанавливаются квоты использования памяти автор предлагает поставить Xmx512m. И не важно, сколько памяти ест приложение, и сколько ее на сервере, 512 и все. Да и MaxPermSize=512m при этом тоже выглядит весело: если perm займет-таки все выделенные ему мегабайты, то где будут располагаться собственно объекты? Опять же, параметры тонкой настройки надо смотреть для конкретной JVM: Sun'овская реализация как-бы не единственная. Если по делу - то согласен с Maksym: для начала увеличить MaxPermSize, если не поможет - смотреть логи сборки мусора. |
|||
|
||||
| intr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.12.2005 Репутация: 2 Всего: 2 |
Этот пример взят из книги SeamInAction. И он работает (по крайней мере у меня)! А подробности тут http://my.opera.com/karmazilla/blog/2007/0...utofmemoryerror --------------------
Исследователь бытия и по совместительству Java-developer |
|||
|
||||
| Shurr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 1 Всего: 7 |
То, что пример взят из книги еще не говорит о его качестве. А вот то, что "автор говорит, что у него с этими параметрами сделать OutOfMemoryError не получилось ни разу" уже много говорит об авторе примера. Начет последней ссылки - тоже не все так просто. У человека была проблема, он ее решил, и описал решение. Но это не значит, что он правильно понял то, о чем пишет. Например, он утверждает, что сборка мусора в перме по умолчанию отключена. Но это не всегда так тут важно чья JDK, в каком режиме запущена (серверный/клиентский и пр.). Хотя для общего понимания проблемы информация конечно полезная. |
|||
|
||||
| intr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.12.2005 Репутация: 2 Всего: 2 |
Я и не говорю, что это решит все проблемы
Кстати, может быть глубокоуважаемый Shurr подскажет ссылки на более качественное описание и решение проблемы (или правильнее сказать класса проблем)? p/s Интересно Andrey1 уже решил проблему с outofmemory? Если да то было бы очень интересно узнать что ему помогло. --------------------
Исследователь бытия и по совместительству Java-developer |
|||
|
||||
| Shurr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 24.10.2006 Репутация: 1 Всего: 7 |
intr
Для начала стоит попытаться определиться с чем проблема: с кодом приложения, или с ресурсами. Если проблема в ресурсах - я бы начал с базовых рекомендаций по диагностике тюнингу от производителя, например Tuning Garbage Collection от Sun. Конкретно по ключам запуска можно посмотреть здесь. В случае, если используется не HotSpot JVM от Sun, то и документацию по используемой реализации, например для IBM. В данном случае ошибка возникает при горячем передеплое, и OutOfMemory вылетает для perm-области. После прочтения документации мы видим, что проблема скорее всего в ресурсах. Конкретнее - при горячем передеплое контейнер держит два полных набора классов: старые классы ждут полной выработки уже запущенных на исполнение задач, новые используются для всех вновь поступивших. В качестве простого решения можно попробовать увеличить размер perm'а. Логически можно предположить, что увеличивать размер perm'а более чем в два раза сейчас не нужно, т.к. один полный набор классов в текущий момент влазит в выделенную для него память. Если не поможет - нужно смотреть лог сборки мусора, производится ли она в указанной области, с какими результатами. В общем и целом ИМХО решение должно быть результатом анализа конкретной ситуации. В вышеупомянутом же "рецепте", предоставлялась "серебрянная пуля", мол запусти с такими параметрами и будет тебе полное счастие. Что и вызвало мои замечания о его (рецепта) малой адекватности. |
|||
|
||||
| intr |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.12.2005 Репутация: 2 Всего: 2 |
Спасибо за развернутый ответ
p/s В большинстве случаев серебряная пуля действует Это сообщение отредактировал(а) intr - 5.12.2008, 19:02 --------------------
Исследователь бытия и по совместительству Java-developer |
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 2 Всего: 5 |
Да, решил. Помог тот самый рецепт "Исследователя бытия" -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Осмелюсь выразить мнение, что данный рецеп вообще говоря не является решением проблемы. По крайней мере у меня он не работает. Это лишь способ отложить проблему на несколько ридиплоев. Пермген в данном случае вылетит допустим не с 5, ну а с 15 раза. А такого можно добиться и без указанных опций:
а путем использования --XmxМНОГОm. Это сообщение отредактировал(а) powerOn - 23.7.2009, 21:03 |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 24 Всего: 62 |
powerOn
Так дело же в perm gen памяти. А xmx это heap, разве он повлияет на редеплой? |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |