Назад | Перейти на главную страницу

почему tomcat7 использует так много оперативной памяти?

На моем сервере только 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 появилась новая кнопка «Найти утечки». При запуске он отображает список веб-приложений (их контекстный путь), которые были остановлены (включая неразвернутые и повторно развернутые), но загрузчик классов которых не удалось скопировать.

Если текущее веб-приложение повторно развернуть несколько раз, оно будет отображаться столько раз, сколько фактически произошло.