GC запускается после 99% памяти кучи

Мы получаем оповещения от сервера приложений Websphere 7.0.25 всякий раз, когда память кучи достигает 90%, но сборка мусора в этот момент не запускалась. Мы отслеживаем память и обнаруживаем, что GC запускается только после 99% использования памяти кучи. Параметры JVM установлены как:

Начальная память кучи — 128 МБ

Макс. память кучи — 512 МБ

Пожалуйста, предложите, есть ли в любом случае, где GC начинается после достижения 90% или меньше, чем использование памяти кучи.


person user3645377    schedule 16.05.2014    source источник
comment
Я хотел бы отметить, что IBM JVM отличается от Oracle JVM, и специфично для WebSphere имеет разные конфигурации для WebApplications.   -  person Paul Bastide    schedule 16.05.2014
comment
Да, я согласен с вашей точкой зрения, что IBM JVM отличается от Oracle JVM, и с использованием Oracle JVM мы чаще отслеживаем цикл GC. То, что вы подразумеваете под WebSphere, имеет разные конфигурации для WebApplications. Могу ли я получить, о какой конфигурации вы говорите?   -  person user3645377    schedule 16.05.2014
comment
вы можете изменить свой процесс Java, чтобы иметь максимальную память кучи, которая выше, вы также можете включить подробный сбор мусора -X verbosegc и получить вывод, который точно скажет вам, что происходит   -  person Paul Bastide    schedule 16.05.2014
comment
Мы уже включили подробную сборку мусора -X verbosegc. И у Макса у нас 512 Мб Heap memory. Мой вопрос: почему GC работает после достижения 99%? или есть ли какой-либо способ или параметр, который мы можем установить в WAS, чтобы GC запускался до достижения 90%. Я имею в виду любой аргумент JVM?   -  person user3645377    schedule 16.05.2014


Ответы (1)


Из http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html Я нашел эту опцию -XX:InitiatingHeapOccupancyPercent=n в описании:

Процент (всего) заполнения кучи для запуска параллельного цикла сборки мусора. Он используется GC, которые запускают параллельный цикл GC на основе занятости всей кучи, а не только одного из поколений (например, G1). Значение 0 означает «выполнять постоянные циклы GC». Значение по умолчанию — 45.

Попробуйте.

person markusw    schedule 16.05.2014