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

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

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

  • Может ли меньше свободного места в старом поколении повлиять на приложение?
  • Если да, то как с этим справиться? Должен ли я экспериментировать с параметрами настройки JVM, такими как newratio, и пытаться увеличить пространство, доступное для старого поколения, или любым другим способом, которым я должен настроить приложение.
6
задан MoveFast 10 June 2012 в 08:01
поделиться