На моем сервере только 0,5 ГБ свободной памяти из 65 ГБ.
total used free shared buffers cached
Mem: 64375 63788 587 0 70 11503
-/+ buffers/cache: 52213 12161
Swap: 67583 6923 60660
Tomcat использует около 22 ГБ памяти.
root 19915 2.9 36.4 42514364 24036804 ? Sl Jun21 433:25 /usr/jdk1.6.0_25/bin/java
-Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.11/conf/logging.properties
-server -Xms2048m -Xmx22528m -XX:MaxPermSize=2048m
-XX:PermSize=512m -XX:MaxNewSize=512m -XX:NewSize=512m -Xnoclassgc
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.11/endorsed
-classpath /usr/local/apache-tomcat-7.0.11/bin/bootstrap.jar:
/usr/local/apache-tomcat-7.0.11/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/apache-tomcat-7.0.11
-Dcatalina.home=/usr/local/apache-tomcat-7.0.11
-Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.11/temp
org.apache.catalina.startup.Bootstrap start
Другие приложения используют небольшой объем памяти. Я не понимаю, что происходит. Если в tomcat есть утечка памяти, как это подтвердить и исправить.
Ваш Tomcat использует 22 ГБ памяти, потому что ваше значение -Xmx (размер кучи JVM) очень велико.
Если возможно, вы должны начать с уменьшения этого значения до 2048, 4096 или 8192, в зависимости от требований вашего приложения к памяти, и посмотреть, что это за золотая середина.
Перестань пялиться на колонну free
: Linux съел вашу оперативную память для кэширование диска (cached 11503
). Так долго как cached
высокий и swap used
низкий, у вас не закончилась память.
У Tomcat были проблемы с утечкой памяти - обычно не из-за собственной кодовой базы, а из-за плохо написанных приложений. Это не обязательно так. Tomcat 7 имеет MemoryLeakProtection вы можете использовать для дальнейшего исследования:
Начиная с Tomcat 6.0.25, в менеджере webapp появилась новая кнопка «Найти утечки». При запуске он отображает список веб-приложений (их контекстный путь), которые были остановлены (включая неразвернутые и повторно развернутые), но загрузчик классов которых не удалось скопировать.
Если текущее веб-приложение повторно развернуть несколько раз, оно будет отображаться столько раз, сколько фактически произошло.