![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Stolzen |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
При редеплое остается старый инстанс таймера и создается новый - т.е. вместо того, чтобы выполнять задачу раз в час, она начинает выполняться чаще. Обнаружилось это по логам.
И еще есть подозрение, что старые таймеры работают "вхолостую" - т.е. ничего полезного не делают. Так же т.к. старый таймер - это inner class службы, то, думаю, эта служба остается в памяти и не собирается сборщиком. Как можно пресечь эту деятельность и обеспечить выполнение только одного таймера? В сторону Quartz еще не глядел - не хотелось бы иметь еще одну зависимость. Это сообщение отредактировал(а) Stolzen - 5.12.2011, 18:42 |
|||
|
||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
У таймера есть конструктор c бул параметром. Если тру, то таймер запускается демоном, и умрет при смерти потока его стартовавшего, т.е. вашего приложения.
Но при редеплое без остановки томката, старый таймер не останавливается по дефолту(с версии 6.0.27). Для этого надо засетать флаг clearReferencesStopTimerThreads. И это unsafe. Это сообщение отредактировал(а) priam220 - 5.12.2011, 22:07 |
|||
|
||||
Stolzen |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
priam220, спасибо за ответ и за ссылку на течи томката. А вы сами не пробовали применять этот параметр? Ничего лишнего не умирает? "but it's unsafe." меня как-то смущает.
П.С. Вообще эти редеплои - одна большая течь. Я еще заметил, что при редеплое старые инстансы кеш системы не отгружаются - и синглтоны получаются в двух экзаплярах. Добавлено через 6 минут и 9 секунд Хотя вроде бы там речь идет о том, что clearReferencesStopThreads небезопасный, а про clearReferencesStopTimerThreads не сказано.
|
|||
|
||||
priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Нет, сам не применял. Пока ребром вопрос не стоял. Там дальше, почему они сделали это опционально:
Это сообщение отредактировал(а) priam220 - 6.12.2011, 09:30 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |