2012-05-03 2 views
0

У меня есть проблемы с виртуальной машины Java-Heap

Мы работаем сайт с Apache HTTP Server и Tomcat приложения Apache. Сервер

Все * .jsp запросы на сервер Apache HTTP будет перенаправлен на сервер Tomcat (протокол: AJP)...

сайт имеет более чем 10'000 Jsp файлы

у нас есть также Google Search Appliance, и он выполняет сканирование веб-сайт каждую ночь.

Пока он сканирует, пространство кучи jvm достигает максимального предела в 8 ГБ.

С javamelody я вижу, что пространство кучи увеличивает аналог загруженных классов.

Для анализа я взял кучу.

Вот отчет от затмения MAT:


Один экземпляр "org.apache.jasper.servlet.JspServlet" загружен "org.apache.catalina.loader.StandardClassLoader @ 0x7092c5148" занимает 1 '189'603'328 (96,75%) байтов.

Память накапливается в одном экземпляре «java.util.concurrent.ConcurrentHashMap $ Segment []», загружаемого «».

Ключевые слова

java.util.concurrent.ConcurrentHashMap $ Segment []

org.apache.catalina.loader.StandardClassLoader @ 0x7092c5148

org.apache.jasper.servlet.JspServlet


Есть ли проблема с запросом GSA?

И почему JVM не может выгрузить созданные классы?

+0

Это показывает 1,1 ГБ используемой кучи. Является ли это единственной важной частью памяти? – Sean

+0

Да, это единственный. Я вручную остановил GSA, чтобы взять кучу кучи, так что причина, почему она не очень большая. Я взял еще одну последнюю неделю, тогда это было 3,8 ГБ. – user1373150

+0

Я бы не остановил GSA, чтобы взять кучу кучи. Если вы это сделаете, некоторые ресурсы могут быть освобождены, а затем ваш кучи кучи не расскажут вам всю историю. Вы видите исключения из памяти в ваших журналах? Если это так, вы можете добавить параметр запуска HeapDumpOnOutOfMemoryError http://stackoverflow.com/q/542979/425406 – Sean

ответ

1

Это похоже на загрузку всех JSP, вызывающих проблемы.

По умолчанию Tomcat сохраняет все загруженные JSP в памяти до тех пор, пока веб-приложение не остановится.

В Tomcat 7 вы можете установить параметр maxLoadedJsps сервлета JSP, чтобы ограничить количество JSP, хранящихся в памяти.

+0

Thx, есть ли также решение для Tomcat 6? – user1373150

+0

Not Тем не менее. Задний порт этой функции застопорился из-за комбинации нескольких ошибок, которые необходимо было исправлять, и отсутствия терес. –

Смежные вопросы