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