Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> tomcat hot redeploy class unload permgen space 
:(
    Опции темы
gelo86
Дата 9.1.2010, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Вот возник вопрос. Всем приходилось использовать томкат (по своей или нет воли smile ). После изменения кода, ми создаем вар. Из томката стераем старый вар и разпакованнаю директорию и закачиваю новий вар. Томкат ловит и деплоит новий вар. Но ведь ми джаву неостонавливали и в памяти остались старые классы (в permgen space). Если там они есть, то джава нових недолжа загружать, но почему все таки все работает ?
PM MAIL   Вверх
MaxPayneC
Дата 9.1.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 3
Всего: 9



Вероятно, при редеплое приложение перезапускается, прибивая все поколения.
PM   Вверх
COVD
Дата 9.1.2010, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Вы только удаляете старый war. Томкат, обнаружив это, сам удаляет папку приложения и соответствующий xml файл приложения в папке conf. Также выгружает из памяти классы, относящиеся к приложению. Это называется undeploy. При завершении процесса выдается сообщение в консоле Томката.
Затем вы кладете новый war в webapp. Опять Томкат сам все распакует и загрузит и сообщит в консоле. 
Короче, не надо Томкату помогать. Процесс редеплоя осуществлятся последовательно в два шага: 1-удалить старый war, 2-положить новый war.  
PM MAIL   Вверх
gelo86
Дата 10.1.2010, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 388
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



А аткуда томкат знает, какие класы выкинуть с памяти ? томкат ведь ета прога на джаве, разве сама программа может записывать и стирать информацию с permgen space ? Может подскажете API для етого ?
PM MAIL   Вверх
Egik2
Дата 10.1.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 29.7.2008
Где: Агудзера

Репутация: 2
Всего: 11



Хееххх...
Просто к слову поделюсь собственным опытом, как переполняется permgen.
Пишу на IDEA 8.14, редеплою автоматически, через ide, при этом как раз память 
не освобождается, а постоянно растет, с каждым редеплоем, пока не рухнет tomcat.
Тож не знаю, как это решить, если кто поможет буду очень благодарен  smile 


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
chand0s
Дата 11.1.2010, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 19.2.2007

Репутация: 1
Всего: 3



Цитата(Egik2 @ 10.1.2010,  13:17)
Тож не знаю, как это решить, если кто поможет буду очень благодарен  smile

1) Можно увеличить PermGen Space. Это не решает проблему, но позволяет иметь больше deploy/redeploy циклов, что при разработке довольно удобно
2) Можно попробовать заменить JRE. Скорее всего у вас - Sun JRE, попробуйте заменить ее на JRockit.

Вообще, лучше всего почитать вот тут
http://www.jroller.com/agileanswers/entry/...ava_s_java_lang
http://blogs.sun.com/fkieviet/entry/classl...he_dreaded_java
PM MAIL   Вверх
COVD
Дата 11.1.2010, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Попробуйте редеплоить в отдельно установленном Томкате (а не из IDE). Желательно установленном на другом компьютере smile .  Если память не чистится, что-то же держит обьекты?  
А возможно это "плата" за усложнение веб - приложения. Все эти фреймворки до добра не доводят.  smile 

Это сообщение отредактировал(а) COVD - 11.1.2010, 17:00
PM MAIL   Вверх
Tony
  Дата 11.1.2010, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



Топик стартер, почитайте про class loader'и. Тогда станет ясно, как томкат убивает старый код и земеняет его новым. 


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.