Я использую Spring Boot 1.2.5 с Java 1.8.0_51, и когда приложение запущено и работает, metaspace продолжает расти со скоростью 10 МБ в час. Похоже на утечку класса или что-то еще, я просто не могу понять, что вызывает его.Spring Boot Metaspace Memory Leak
Приложение работает с Jetty вместо Tomcat.
У меня запущен цикл событий Reactor и несколько запланированных процессов. Однако это происходит, когда я отказываюсь от них.
Вот некоторые из библиотек, которые я использую:
spring-boot-starter-actuator
spring-boot-starter-aop
spring-boot-starter-data-jpa
spring-boot-starter-data-rest
spring-boot-starter-security
reactor-spring-context
hibernate-ehcache
вы должны отслеживать загрузку классов, разгрузку классов и детали GC, чтобы узнать, получают ли какие-либо загрузчики классов GCed. вы также должны регистрировать/визуализировать размер метаданных с течением времени. Возможно, что он просто не достиг отметки о высокой воде, требующей сбора. – the8472
Спасибо за ваш комментарий Suseika. Я просто проследил загрузку класса, и я не вижу ничего странного. В последний час я просто загрузил 10 классов, но память увеличилась на 10 МБ. В настоящее время у меня установлен Metaspace max до 200 МБ, для кучи, которая работает без проблем с 500 МБ, и в итоге она попадает в 200 МБ, и приложение падает. –
У вас есть исполнительный механизм на месте, то есть статистика записи и по умолчанию делает это в памяти ... Вы также используете кеширование (судя по включению «hibernate-ehcache», убедитесь, что ваши кеши очищены/обновлены правильно Но в целом, удалите анализатор и проанализируйте поведение вашего приложения. –