У меня есть приложение Java EE, работающее на jboss-5.0.0.GA.Приложение использует инструмент отчетов BIRT для генерации нескольких отчетов.
Сервер имеет 4 ядра по 2,4 ГГц и 8 Гб оперативной памяти.
В сценарии запуска используются следующие параметры:
-Xms2g -Xmx2g -XX:MaxPermSize=512m
Приложение достигло некоторой стабильности с этой конфигурацией, некоторое время назад у меня было много сбоев из-за того, что память была полностью заполнена.
Прямо сейчас, приложение не падает, но памятьвсегда полностью используется.Пример команды top:
Mem: 7927100k total, 7874824k used, 52276k free
В процессе Java используется 2,6 г, и это единственное приложение, работающее на этом сервере.
Что можно сделать, чтобы обеспечить количествосвободной памяти?
Что я могу сделать, чтобы попытаться найти утечку памяти?
Любое другое предложение?
TIA
На основе ответаmezzie:
Если вы используете linux, то, что ядро делает с памятью, отличается от того, как работают окна.В Linux он будет пытаться использовать всю память.После того, как он использует все, он затем перезапустит память для дальнейшего использования.Это не утечка памяти.У нас также есть jboss tomcat на нашем linux-сервере, и мы некоторое время назад изучали эту проблему.
Я нашел больше информации об этом,
https://serverfault.com/questions/9442/why-does-red-hat-linux-report-less-free-memory-on-the-system-than-is-actually-ava
http://lwn.net/Articles/329458/
И хорошо, половина памяти кешируется:
total used free shared buffers cached
Mem: 7741 7690 50 0 143 4469