Запрос 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.

Кроме того, есть ли инструмент, который может помочь в таких случаях?

0 ответов

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