#java #memory-leaks #prepared-statement #micronaut #eclipse-memory-analyzer
Вопрос:
Я столкнулся с некоторой проблемой при выполнении процесса в моем приложении micronaut. Я добавил аргументы jvm пути к куче и загрузил heapdump с сервера. Когда я пытаюсь проанализировать свалку, это показывает, что создается много экземпляров PreparedStatement:
Увидев запрос на левой панели скриншота ниже, я предполагаю, что это происходит в следующей строке моего кода, которая вызывается в цикле для нескольких идентификаторов элементов
public boolean existsProduct(String itemId) {
return cacheDao.existsById(itemId);
}
Здесь cacheDao-это интерфейс, расширяющий интерфейс Micronaut CrudRepository, имеющий Repository
и JdbcRepository
аннотации.
Что мне непонятно, так это то, что этот приведенный выше код управляется Jpa данных, а соединение/набор результатов/оператор все внутренне открываются и закрываются, так как этот код может вызвать так много экземпляров PreparedStatement, не закрывая их.
Может кто-нибудь, пожалуйста, помочь копнуть его глубже.
Спасибо,