Соответствующий размер кучи и старого поколения для JVM для приложения с большим объемом данных

  • Я запускаю серверное приложение, используя JVM sunjava-1.6.0_21.
  • Мое приложение содержит большие объемы данных и действует как кеш-сервер. Таким образом, он хранит много долгоживущих данных, которые мы не ожидаем получить GC во время работы приложения.
  • Я устанавливаю следующие параметры JVM -Xmx16384M и -Xms16384M.
  • После того, как необходимые данные были загружены, ниже показано использование памяти приложением.
  • Общий объем кучи: 13969522688
  • Максимальное пространство кучи: 15271002112
  • Свободное место в куче: 3031718040
  • Долгосрочное хранилище кучи (старого поколения): Used=10426MB Max=10922MB Used/Max=95%

Использование старого поколения — я подтвердил, что это связано с фактическими данными и не ожидается, что оно будет бесплатным. Мой вопрос заключается в том, что по умолчанию JVM определяет размер кучи (она выделяет 10922 МБ старого поколения), что оставляет очень мало свободного места в разделе старого поколения.

  • Может ли меньше свободного места в старом поколении повлиять на приложение?
  • Если да, то как мне с этим справиться? Должен ли я экспериментировать с параметрами настройки JVM, такими как newratio, и пытаться увеличить пространство, доступное для старого поколения, или любым другим способом, которым я должен настроить приложение.

person MoveFast    schedule 07.06.2012    source источник
comment
Это виртуальный или физический сервер?   -  person Anders    schedule 08.06.2012
comment
Тогда вам пригодится эта ссылка — vmware.com/files/pdf/techpaper/   -  person Anders    schedule 11.06.2012


Ответы (2)


Может ли меньше свободного места в старом поколении повлиять на приложение?

Если ваш Tenured Gen заполнится, произойдет крупная коллекция, и этот тип сбора будет дорогостоящим. Вы можете использовать параметры: -verbose:gc и -XX:+PrintGCDetails, чтобы узнать, происходит ли слишком часто полный сборщик мусора. Если это так, то да, это может повлиять на производительность вашего приложения.

Если да, то как мне с этим справиться? Должен ли я экспериментировать с параметрами настройки JVM, такими как newratio, и пытаться увеличить пространство, доступное для старого поколения, или любым другим способом, которым я должен настроить приложение.

Вы можете попробовать NewRatio, но имейте в виду, что если ваш Эдем слишком короток, ваш штатный ген, вероятно, будет заполнен быстрее.

В заключение, вы должны использовать инструмент мониторинга, чтобы иметь лучшее представление о параметрах виртуальной машины, которые вы должны использовать. Он легко покажет вам, как заполняются ваши поколения во время выполнения приложения, его легче читать и понимать, чем журналы gc;)

person alain.janinm    schedule 08.06.2012
comment
не могли бы вы указать какой-нибудь ресурс для выполнения такого мониторинга с помощью профилировщика. - person MoveFast; 10.06.2012
comment
@ManojGumber Часто используется VisulaVM: visualvm.java.net Внизу страницы вы можете найдите ссылку на Отображение статистики пула памяти Java с помощью VisualVM. Это может быть интересно для вас. Взгляните на различные плагины и документы, я думаю, вы найдете отличные вещи! - person alain.janinm; 11.06.2012

Если вы знаете, что продолжительность жизни ваших объектов — это долгая игра с параметрами, которые задают размер регионов по отношению друг к другу.

Вы можете установить коэффициенты в young generation и old generation (места Эдема и Террана), а также в обоих выживших.

Цель состоит в том, чтобы свести к минимуму полную сборку мусора, позволив второстепенной сборке мусора освободить всю память.

Вы предотвращаете сборку мусора для освобождения объектов, оставляя их доступными в вашем приложении. Я имею в виду, что вы должны заботиться только о тех объектах, которые удаляются второстепенными сборщиками мусора.

Включить параметры

-verbose:gc -Xloggc:/opt/tomcat/logs/gc.out -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

Затем с помощью инструмента GCViewer можно увидеть время, проведенное в gc, и количество (размер) удаленных объектов. Среди некоторых полезных показателей.

person ssedano    schedule 08.06.2012