У меня есть проблемы с виртуальной машины 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 не может выгрузить созданные классы?
Это показывает 1,1 ГБ используемой кучи. Является ли это единственной важной частью памяти? – Sean
Да, это единственный. Я вручную остановил GSA, чтобы взять кучу кучи, так что причина, почему она не очень большая. Я взял еще одну последнюю неделю, тогда это было 3,8 ГБ. – user1373150
Я бы не остановил GSA, чтобы взять кучу кучи. Если вы это сделаете, некоторые ресурсы могут быть освобождены, а затем ваш кучи кучи не расскажут вам всю историю. Вы видите исключения из памяти в ваших журналах? Если это так, вы можете добавить параметр запуска HeapDumpOnOutOfMemoryError http://stackoverflow.com/q/542979/425406 – Sean