Я не думаю, что у вас есть проблема здесь.
Вместо этого я думаю, что вы неверно истолковываете данные, которые вы просматриваете.
Обратите внимание, что на диаграмме пространства кучи отображаются два числа: Размер кучи и Использованная куча
Размер кучи (оранжевый) - это объем памяти, доступный JVM для кучи.
Это означает, что это сумма, которую JVM запросила в определенный момент у ОС.
Используемая куча является частью размера кучи , которая фактически используется.
Игнорируя фазу запуска, он растет линейно, а затем многократно падает со временем.
Это типичное поведение приложения на холостом ходу.
Некоторая часть приложения генерирует умеренное количество мусора (возрастающая часть кривой), который время от времени собирается.
Низкие точки этой кривой - это объем памяти, который вы на самом деле используете.
Кажется, это около 250 МБ, что мне не очень нравится, особенно когда вы говорите, что общее потребление 6-7 ГБ при реальной работе звучит для вас разумно.
Некоторые другие наблюдения:
Как загрузка процессора, так и куча быстро растут / сильно колеблются во время запуска.
Этого следовало ожидать, потому что анализ хранилищ и сущностей происходит в это время.
JpaMetamodelMappingContext
s - размер около 23 МБ.
Опять же, хороший кусок памяти, но не такой большой.
Это включает в себя материал, на который он ссылается, который является почти исключительно метаданными из реализации JPA, как вы можете легко увидеть, когда вы посмотрите на его источник .