| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > tomcat hot redeploy class unload permgen space |
| Автор: gelo86 9.1.2010, 17:08 |
| Вот возник вопрос. Всем приходилось использовать томкат (по своей или нет воли |
| Автор: MaxPayneC 9.1.2010, 17:41 |
| Вероятно, при редеплое приложение перезапускается, прибивая все поколения. |
| Автор: COVD 9.1.2010, 18:28 |
| Вы только удаляете старый war. Томкат, обнаружив это, сам удаляет папку приложения и соответствующий xml файл приложения в папке conf. Также выгружает из памяти классы, относящиеся к приложению. Это называется undeploy. При завершении процесса выдается сообщение в консоле Томката. Затем вы кладете новый war в webapp. Опять Томкат сам все распакует и загрузит и сообщит в консоле. Короче, не надо Томкату помогать. Процесс редеплоя осуществлятся последовательно в два шага: 1-удалить старый war, 2-положить новый war. |
| Автор: gelo86 10.1.2010, 13:37 |
| А аткуда томкат знает, какие класы выкинуть с памяти ? томкат ведь ета прога на джаве, разве сама программа может записывать и стирать информацию с permgen space ? Может подскажете API для етого ? |
| Автор: Egik2 10.1.2010, 15:17 |
| Хееххх... Просто к слову поделюсь собственным опытом, как переполняется permgen. Пишу на IDEA 8.14, редеплою автоматически, через ide, при этом как раз память не освобождается, а постоянно растет, с каждым редеплоем, пока не рухнет tomcat. Тож не знаю, как это решить, если кто поможет буду очень благодарен |
| Автор: chand0s 11.1.2010, 14:05 | ||
1) Можно увеличить PermGen Space. Это не решает проблему, но позволяет иметь больше deploy/redeploy циклов, что при разработке довольно удобно 2) Можно попробовать заменить JRE. Скорее всего у вас - Sun JRE, попробуйте заменить ее на JRockit. Вообще, лучше всего почитать вот тут http://www.jroller.com/agileanswers/entry/preventing_java_s_java_lang http://blogs.sun.com/fkieviet/entry/classloader_leaks_the_dreaded_java |
| Автор: COVD 11.1.2010, 16:53 |
| Попробуйте редеплоить в отдельно установленном Томкате (а не из IDE). Желательно установленном на другом компьютере А возможно это "плата" за усложнение веб - приложения. Все эти фреймворки до добра не доводят. |
| Автор: Tony 11.1.2010, 22:26 |
| Топик стартер, почитайте про class loader'и. Тогда станет ясно, как томкат убивает старый код и земеняет его новым. |