Управление размером JVM

У меня есть Java-приложение, которому иногда требуется много памяти. Обычно он потребляет 100-200 МБ, но иногда за 1-2 минуты потребляет ~2 ГБ.

Поскольку я должен поддерживать этот сценарий, я установил xmX на 2048.

Проблема в том, что сборщик мусора не освободит эту память, если приложению не потребуется больше памяти. Сервер становится медленным и тяжелым, и у меня нет возможности заставить это приложение освобождать память.

Я безуспешно пытался вызвать System.gc() после этой части.

Есть ли еще параметры VM, которые могут здесь помочь? Есть ли способ заставить GC работать?

Спасибо!


person Matan    schedule 26.05.2013    source источник


Ответы (1)


На самом деле, некоторые действительно возвращают память операционной системе: SerialGC и G1GC. Если вы используете сборщик пропускной способности или сборщик с низкой паузой, JVM не будет освобождать память для ОС.

Вы можете получить более подробную информацию в этой статье.

Надеюсь, это поможет !

person Pierre Laporte    schedule 26.05.2013