forum.bitel.ru http://forum.bitel.ru/ |
|
Высвобождение памяти http://forum.bitel.ru/viewtopic.php?f=44&t=10154 |
Страница 1 из 1 |
Автор: | oldb0y [ 08 фев 2015, 13:46 ] |
Заголовок сообщения: | Высвобождение памяти |
Пользовался статьей с wiki по мониторингу через SNMP. На графике в 11 часов были поставлены логи на обработку в ~11:45 клиент биллинга показал, что обработка завершена. И вот прошло 2 часа после завершения обработки, а процессы аккаунтига до сих пор пикуют! Через сколько будет высвобождена оперативная память? На всякий уточню, а то может не правильно понимаю: HeapUsed - Используемая аккаунтиргом в настоящий момент память, которая высвобождается сборщиком мусора. HeapCommitted - Занятая аккаунтиргом память (само приложение + данные "data-файлов" + выборки из БД + неведомые нужды), также высвобождается сборщиком мусора. Вложение:
|
Автор: | Amir [ 08 фев 2015, 14:19 ] |
Заголовок сообщения: | Re: Высвобождение памяти |
Не совсем - HeapCommited - это сколько памяти JVM взяла у системы. HeapUsed - это сколько из HeapCommited на самом деле используется. Когда HeapUsed падает вниз - это работает сборщик мусора. Сборщик работает по своим алгоритмам и может не вызываться пока HeapUsed не подойдет к HeapCommited (не вплотную, но близко), особенно при большой нагрузке и/или при большом кол-ве свободной памяти и/или малом кол-ве занятой, как здесь ~150MB. А может и вызываться. Или вызываться и собирать далеко не все. HeapCommited обычно падает вниз когда HeapUsed достаточно долго меньше HeapCommited. Т.е. чтобы подтвердить, что есть утечка памяти - нужно вызывать accounting.sh gc пару раз и посмотреть, не упадет ли до среднего значения HeapUsed. Если есть потребность, чтобы JVM не забирала у системы лишнего, а просто чаще вызывала сборщик мусора - то можно поставить ограничение Xmx, но с запасом. Но мы не рекомендуем ставить меньше 256. |
Автор: | oldb0y [ 09 фев 2015, 10:42 ] |
Заголовок сообщения: | Re: Высвобождение памяти |
Спасибо, теперь пришло правильное понимание HeapCommited. Можно в дополнение получить разъяснения по NonHeap...? А то совсем не понятно. Из всего можно сделать вывод: про сборщик мусора известно одно - он начинает работу когда реальный объем памяти подходит к показателям Commited. Что именно он оставляет/уберает - не до конца известно (главное чтобы оставлял данные которые "сейчас" находятся в обработке, и не происходил повторный запрос на их получение). Что еще примечательно как только приложение забирает свои "мегабайты", высвобождать ресурсы оно не спешит (пока не перезапустишь приложение). Что в принципе эффективно, ибо тратится меньше процессорного времени для обработки сборщика мусора. На графике эти волны занимают 1-3 часа. Вложение: Буду дальше наблюдать за графиками и ждать какие-нибудь интересные моменты... |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |