Как очистить метапространство принудительно с помощью Java 1.8

Я недавно обновил версию Java с 1.6 до 1.8. После перехода на java 1.8 потребление памяти в метапространстве увеличивается со временем (это наблюдается через JConsole.) Кроме того, при каждом доступе к веб-странице размер метапространства увеличивается. Так,

Есть ли способ, которым я могу принудительно очистить Metaspace?

Есть ли способ, которым я могу проверить, что все идет в Metaspace и увеличивает размер Metaspace?

Какой GC (SerialGC, G1, ConcMarkSweep) эффективно очищает Metaspace и какие конфигурации виртуальных машин JVM мне следует использовать для GC?

Каков минимальный объем оперативной памяти, необходимый для Java 1.8, для корректных операций с метапространством? В моем случае, он ограничен 256 МБ ОЗУ с равным размером подкачки на миниатюрной Linux-коробке.

Если мы ограничим размер метапространства с помощью XX:MaxMetaSpaceSize, JVM поднимает условие outofmemory:metaspace.

1 ответ

Большое спасибо за ваши ответы!

Я обнаружил, что Old JaxB и JDK8 Metaspace OutOfMemory Issue отображают ту же проблему, что и моя.

С "-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true"Я смог добиться стабильного использования метаскопа.

С этой опцией, если мое приложение бездействует (просто периодически обращается к веб-сервису, читает xml и показывает подробности из xml в моем слое представления), оно больше не увеличивает использование памяти ни в выводе верхней команды, ни в метапространстве (в Jconsole).

Но если я выполняю какие-либо операции (например, обращаюсь к веб-страницам и выполняю операции с базой данных / ввод-вывод файла и т. Д.), Использование памяти возрастает. Так было и с Java 1.6, но с Java 1.6 память использовалась, чтобы достичь нормального уровня за 5-6 минут. Но с Java 1.8, это занимает 10-12 часов, чтобы добраться до нормального уровня.

Вот мои конфигурации JVM:

java -Dsun.rmi.dgc.client.gcInterval=60000 -XX:NewRatio=3 - 
XX:MinHeapFreeRatio=60 -XX:MaxHeapFreeRatio=70 -Xmx64M -Xms32M -
XX:MetaspaceSize=12M -XX:+UseLargePagesInMetaspace -
XX:CompressedClassSpaceSize=10M -XX:+UseLargePages -
XX:+CMSClassUnloadingEnabled -
Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true - 
Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -
Dcom.sun.management.jmxremote.authenticate=false -
Dcom.sun.management.jmxremote.port=1099 -Dfile.encoding=UTF8 -
Dorg.apache.jasper.compiler.disablejsr199=true -Duser.timezone=$timezone -jar start.jar
Другие вопросы по тегам