![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
cuvorov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 7.5.2007 Репутация: нет Всего: нет |
Добрый день.
Есть сервис на Java к нему 4 раза в день, обращаются по сети. Сервис выполняет расчеты, в момент расчетов он потребляет довольно много памяти. После того как расчеты закончены и данные возвращены, память не возвращается операционной системе. При этом при последующих подсчетах память у ос не забирается. Все работает отлично. Только кроме сервиса на сервере еще обитает apache, mysql, posthresql которые довольно активно используются. Как заставить Java отдать память операционной системе? |
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Сборщик мусора сам соберет объекты, на которые больше нет прямых ссылок. Если Вы не будете хранить эти ссылки, то память в перерывах между вычислениями будет возвращена операционной системе.
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
wedens |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 17.10.2009 Репутация: нет Всего: нет |
посмотрите профайлером что происходит с памятью. вполне возможно где-то висят ссылки, не всегда их очень просто найти, висеть к примеру могут в коллекциях, если так то стоит использовать Weak*
|
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Возможно это зависит скорее от используемых JVM и ОС нежели от настроек. Например, в Виндоус не отдает, а в Соларис - отдает. Как-то так. А вообще эпизодические вычисления - классический пример задачи, которую удобно реализовывать в облаке (Cloud computing). Там вся суть как раз в том, чтобы выделять и освобождать ресурсы под задачи динамически. Это сообщение отредактировал(а) COVD - 17.10.2010, 14:00 |
|||
|
||||
Skynin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 1.7.2007 Где: Харьков Репутация: 6 Всего: 10 |
JVM по умолчанию лениво отдает память ОСи, потому что ожидается что потребуется опять, а новый запрос памяти у ОСи - снижает быстродействие.
Но, JVM немало сама похожа на ОСь Список ключиков A Collection of JVM Options - немал Всяких - -XX:+AggressiveHeap -XX:MaxHeapFreeRatio (default 70%) там много. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |