Утечка памяти с пружинным приводом InMemoryAuditEventRepository

Я столкнулся с утечкой памяти в моем приложении с весенней загрузкой, и после анализа дампа кучи с помощью Eclipse MAT он указывает потенциальную память в исполнительном механизме весенней загрузки: именно с InMemoryAuditEventRepository (события аудита).

One instance of "org.springframework.boot.actuate.audit.InMemoryAuditEventRepository" loaded by "sun.misc.Launcher$AppClassLoader @ 0xe7020a30" occupies 210 676 784 (57,25%) bytes. The memory is accumulated in one instance of "org.springframework.boot.actuate.audit.AuditEvent[]" loaded by "sun.misc.Launcher$AppClassLoader @ 0xe7020a30".

Keywords
org.springframework.boot.actuate.audit.InMemoryAuditEventRepository
org.springframework.boot.actuate.audit.AuditEvent[]
sun.misc.Launcher$AppClassLoader @ 0xe7020a30

Как лучше всего отключить это событие аудита в памяти:

  1. Убрать зависимость пружина-загрузчик-привод
  2. management.endpoints.enabled-по-умолчанию = true
  3. endpoints.auditevents.enabled = false

заранее спасибо

существует очень большая проблема с использованием спящего режима с приложениями весенней загрузки, что довольно часто вызывает утечки памяти. чтобы убедиться, что это не ваш случай, проверьте свои репозитории и убедитесь, что у вас нет запросов select с in

BigGinDaHouse 02.05.2018 12:09

Спасибо за предложение! не знал об этом! может оказаться большим подспорьем.

IKane 03.05.2018 11:10

Нет проблем, это не очень общедоступная информация, скажем так, и я долго пытался найти эту проблему. Кроме того, если это решение вашей проблемы, дайте мне знать, и я сделаю свой комментарий ответом, чтобы вы могли выбрать его как правильный. заранее спасибо

BigGinDaHouse 03.05.2018 11:11

На самом деле это не моя проблема. Мой pb как-то связан с пружинным приводом загрузки, показывающим показатели конечных точек и, в частности, с аудитом событий, потребляющих много памяти.

IKane 03.05.2018 11:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
2
4
1 846
1

Ответы 1

Наткнулся на ту же находку ...

После некоторого расследования было обнаружено, что это не утечка, а скорее загрузка Spring, в которой хранятся последние 4000 событий аудита безопасности (вход в систему). Он вырастет до этого числа и останется там ...

Вы можете создать свою собственную реализацию, а затем записать ее в кэш или БД и не хранить в памяти.

(Справка)

Другие вопросы по теме