У меня есть приложение Java EE, работающее на jboss-5.0.0.GA. Приложение использует инструмент отчетов BIRT для создания нескольких отчетов.
Сервер имеет 4 ядра по 2,4 ГГц и 8 ГБ оперативной памяти.
Сценарий запуска использует следующие параметры:
-Xms2g -Xmx2g -XX:MaxPermSize=512m
Приложение достигло некоторой стабильности с этой конфигурацией, некоторое время назад у меня было много сбоев из-за того, что память была полностью заполнена.
Сейчас приложение не вылетает, но память всегда используется полностью. Пример верхней команды:
Mem: 7927100k total, 7874824k used, 52276k free
Процесс Java показывает использование 2,6g, и это единственное приложение, работающее на этом сервере.
Что я могу сделать, чтобы обеспечить объем свободной памяти?
Что я могу сделать, чтобы попытаться найти утечку памяти?
Любое другое предложение?
ТИА
Основано на ответе меззи:
Если вы используете Linux, то, что ядро делает с памятью, отличается от того, как работает Windows. В Linux он попытается использовать всю память. После того, как он использует все, он будет перерабатывать память для дальнейшего использования. Это не утечка памяти. У нас также есть jboss tomcat на нашем Linux-сервере, и мы некоторое время назад исследовали эту проблему.
Я нашел больше информации об этом,
http://lwn.net/Articles/329458/
Ну и половина памяти кешируется:
total used free shared buffers cached
Mem: 7741 7690 50 0 143 4469