Запрос Spring Boot занимает 40-50 МБ памяти
Я использую весеннюю загрузку с JPA Hibernate. Я наблюдаю за службой для кучи и обнаружил, что каждый мой запрос занимает около 40-50 МБ.
Таким образом, память увеличивается, после нескольких запросов GC освобождает память, и это продолжается вечно.
Итак, мой первый вопрос - это утечка памяти?
Также я пытаюсь найти причину этого. Итак, я использовал Runtime.getRuntime() freeMemory и totalMemory(), чтобы определить, что около 15 МБ используется при получении одного вызова в дБ и заполнении им проекции
public interface RecommendationProjection {
public String getType();
public boolean getIsOK();
public int getId();
public int getTagCount();
public double getQuality() ;
public LocalDateTime getLastActivity();
}
и hibernate возвращает 567 записей, так что в основном то, что я получаю из БД, это список из 567 выше проекции, но что я не понимаю, как этот объект может занять такой большой объем памяти? Является ли спящий причиной этого?
При использовании проекции, спящий режим запрашивает определенное поле или выбирает все поля из базы данных?
Затем я сопоставляю этот домен с DTO, который снова использует 15-20 МБ памяти? это мой DTO
public class RecommendationInfoDTO {
private String type;
private boolean isOK;
private int id;
private int tagCount;
private double quality ;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone="IST")
private LocalDateTime lastActivity;
.. getters and setters
}
К вашему сведению: для мониторинга я использую VisualVM.
Кроме того, есть ли инструмент, который может помочь в таких случаях?