![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
Суть проблемы :
На продакшен-сервере переодицки вылазит OutOfMemory. Как известно GarbageCollector запускается когда свободной памяти остаётся мало. Но при таких раскладах у меня сервер ,как я понимаю, съедает остаток памяти быстрее чем успевает отработать сборщик. (например построил DOM-модель метров на 100) Я где то слышал, что можно настроить сборщик таким образом, что бы он постоянно работал на фоне, а не запускался, когда памяти не хватает... (о нагрузке на проц пока не говорим, т.к. в наши дни он редко загружен на все 100 Ну или крайне полезной оказалась бы опция позволяющая запускать GarbageCollector ,скажем, каждые 30 минут ... Кто что думает по этому поводу ? Заранее благодарен. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Вот этот документ смотрел? Может, там что-нибудь есть.
http://java.sun.com/docs/hotspot/gc1.4.2/index.html Ну и можно, конечно, просто стартовать System.gc() по таймеру, но гарантий - никаких... Это сообщение отредактировал(а) Lamer George - 4.11.2005, 10:35 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
смотрел конечно, но ответов не нашёл, к сожалению .... может мой английский меня подвёл, а мож и нема System.gc() - такая мыслишка меня посещала, но как то уж притянуто за ухи, мне кажется .... Да и сервер энто... чё там такого работать с таймером могёт? MDB чтоль... Это сообщение отредактировал(а) KostenkoSergey - 4.11.2005, 10:48 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Так что переодический запуск тебе не поможет, GarbageCollector всегда запускается перед тем как выкинуть OutOfMemoryError. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
я писал, что Но при таких раскладах у меня сервер ,как я понимаю, съедает остаток памяти быстрее чем успевает отработать сборщик. (например построил DOM-модель метров на 100) запустить принутиельно можно - gc() .... только вот как это сделать пораньше.... есть ли опции Может конечно мне и не поможет Это сообщение отредактировал(а) KostenkoSergey - 4.11.2005, 13:54 |
|||
|
||||
| tux |
|
||||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
Опции-то есть, только в двух словах их не опишешь. В первую очередь посоветовал бы при запуске сервера задать опцию -verbose:gc или -Xloggc:file. Делают они одно и то же - выдают лог работы сборщика мусора, только вторая выдает лог в указанный файл. По крайней мере можно определить когда он запускался и была ли попытка освободить память прежде чем вылетело исключение. Далее, возможно поможет установка ключа -Xincgc, который включает более предсказуемый инкрементный сборщик мусора. Правда при этом несколько падает производительность. Если ничего не поможет, можно поиграть с ключами HotSpot, которые описаны здесь. Однако, этот процесс уже вряд ли можно четко описать. Вспомнил вот еще один метод. Периодически по мере построения того же DOM можно выполнять что-нибудь похожее на такой код:
Он в конце концов гарантирует, что сборщик мусора принялся таки за дело. Согласен, выглядит несколько безумно Это сообщение отредактировал(а) tux - 4.11.2005, 17:25 |
||||
|
|||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Обычно это результат ошибки программирования и gc бессилен тут помочь. Это сообщение отредактировал(а) COVD - 4.11.2005, 17:13 |
|||
|
||||
| KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
интересный примерчк
Беда только, что он время отклика на запрос увеличивает на порядок... 2COVD : offtopic (возможно, хотя я бы не был таким категоричным в подобного рода заявлениях) Это сообщение отредактировал(а) KostenkoSergey - 4.11.2005, 17:29 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Я считал, что на время запуска GC все треды останавливаются, разве нет? В любом случае смоделировать подобную ситуацию мне не удалось (создал 4 потока которые активно "мусорят", но OutOfMemory так и не получил). -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Если не ошибаюсь, большинство jvm запускает сборщик в двух режимах. Не скажу точно как называются, но суть такова, что один режим - это подчистка без особых замедлений(вроде как удаление файла), а второй запускается когда уже первый режим не помогает - он останавливает треды, подчищает всё и стягивает до кучи(а-ля дефрагментация диска). Кажется у Эккеля есть абзацик по сему поводу. Кажется на сановской машине именно так и реализовано было(для 1.2 -1.3). Ещё приводилось сравнение джавовской кучи с конвейером, чем она выгодно отличалась от куч хотя бы того же C++. -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
![]()
|
| Правила форума "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. |