Как отследить точное местоположение утечки памяти в инструменте eclipse Memory analyzer

#java #memory-leaks #prepared-statement #micronaut #eclipse-memory-analyzer

Вопрос:

Я столкнулся с некоторой проблемой при выполнении процесса в моем приложении micronaut. Я добавил аргументы jvm пути к куче и загрузил heapdump с сервера. Когда я пытаюсь проанализировать свалку, это показывает, что создается много экземпляров PreparedStatement:

Memory_leak_suspect

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

введите описание изображения здесь

 public boolean existsProduct(String itemId) {
        return cacheDao.existsById(itemId);
}
 

Здесь cacheDao-это интерфейс, расширяющий интерфейс Micronaut CrudRepository, имеющий Repository и JdbcRepository аннотации.

Что мне непонятно, так это то, что этот приведенный выше код управляется Jpa данных, а соединение/набор результатов/оператор все внутренне открываются и закрываются, так как этот код может вызвать так много экземпляров PreparedStatement, не закрывая их.

Может кто-нибудь, пожалуйста, помочь копнуть его глубже.

Спасибо,