Вот мои настройки кучи JVM Sun Hotspot 1.6 в WebLogic 11g:
-Xms10g -Xmx10g -XX:MaxPermSize=256m -XX:+UseParNewGC -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:ConcGCThreads=2
То, что я вижу на графике % без кучи JVM за 24 часа, в основном % без кучи снижается с медленной скоростью, пока мы не достигнем около 9% (занимает около 24 часов). Затем система запускает то, что выглядит как полный gc, и возвращается к 97%.
Есть ли какой-то параметр, который я должен добавить/изменить, который скажет JVM выполнить этот полный GC раньше, чем когда мы получим менее 10% свободной кучи? например какая-то настройка соотношения?
Не вызывает проблем то, что он ждет, пока мы не освободимся до 9%, но это усложняет мониторинг/предупреждение. В идеале мы хотим всегда оставаться выше, чем, скажем, 30% бесплатно, чтобы, если мы опустимся до этих однозначных чисел, мы знали, что есть какая-то проблема, например. утечка памяти.
System.gc()
не запускает сборщик мусора окончательно, он предлагает запустить его. Это не детерминировано. - person matt b   schedule 11.10.201210G
пространства. Лучшее указание на утечку — это когда полные GC не могут освободить пространство или когда объем освобождаемого пространства со временем становится все меньше и меньше, что не так легко отслеживать автоматически. - person matt b   schedule 11.10.2012