EDIT - так посмотрел на Cache # 15 и MemoryStore # 9 в JVisualVM. Оказывается, это кеш запросов. Надеется, сбросив конфигурацию кэша в конфе, что ограничивает кэш запросов менее 10k элементов (по умолчанию) будет решить эту проблему ...анализ проблемы с памятью
Мы имеем приложение Grails (v1.2.0) развернутую на TOMCAT ого. Опытался сбой OOM. Получил кучу кучи и начал анализировать его в JVisualVM. Это то, что я вижу
и этого
так что много Ehcache вещи, и, безусловно, большое количество байт и символьных массивов. Я пробовал googling вокруг «grails memory leak ehcache», но ничего окончательного не происходит. Кто-нибудь видел какие-либо проблемы, подобные этому, или имел какое-либо представление о том, что может быть причиной этого? Может быть, это неправильно сконфигурированный ehcache?
Мы используем различные плагины (acegi, quartz, mail, background-thread), все последние версии FOR grails версии 1.2.0.
EDIT - еще информация
начиная кота со следующим
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xms1024m -Xmx2048m -XX:MaxPermSize=256m -d64 -server -XX:+HeapDumpOnOutOfMemoryError -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseConcMarkSweepGC
и ошибка
java.lang.OutOfMemoryError: Java heap space
Интересно, что мы использовали, чтобы получить ошибки, связанные завивка поколения пространства, но когда i, обновленный до конфигурации Java, показанной выше, ошибки пространства памяти исчезли.
Сколько памяти вы отдаете куче и PermGen? – Davidann
У вас есть монитор EHCache подключен? что большая часть памяти, вероятно, будет связана с отсутствием конфигурации EHCache. Посмотрите, есть ли какой-то кеш, который может быть слишком большой. Может быть, установить максимальное количество элементов и TTL для элементов кеша. – Sean
@sean мы определенно используем кеш в сопоставлении GORM, но не имеем централизованного конфигуратора ehcache. возможно, именно так. Будет ли TTL по умолчанию навсегда? Будет ли он продолжать кешировать объекты снова и снова? – hvgotcodes