Несоответствие между метрикой "jvm.memory.max" Spring Actuator и Runtime.getRuntime (). MaxMemory () - PullRequest
0 голосов
/ 08 февраля 2019

Я пробую Spring Boot Actuator и смотрю на конечную точку "/actuator/metrics/jvm.memory.max".

Я также запускаю приложение Springboot со следующей опцией JVM:

-Xmx104m

Я создал конечную точку ("/ memory", которая возвращает значение Всего, Свободно, Использовано& Max памяти для приложения. Я использовал для этого методы Runtime.getRuntime (). GetXXX ().

Вопрос, который у меня возникает, заключается в том, что значение Springboot "jvm.memory.max" показывает мне в байтахне совпадает со значением -Xmx и что мне показывает конечная точка "/ memory".

Есть мысли, почему это несоответствие?

enter image description here

enter image description here

1 Ответ

0 голосов
/ 09 февраля 2019

Spring Boot использует Micrometer для поддержки метрик.Метрика jvm.memory.max создается классом JvmMemoryMetrics Mirometer с использованием MemoryPoolMXBean.getUsage().getMax().

. MemoyPoolMXBean предоставляет информацию как о куче, так и о не-куче памяти, и Micrometer разделяет их с помощью тегов наjvm.memory.max метрика.В выводе, показанном в вопросе, это значение представляет собой кучу и не кучу памяти, поэтому она не совпадает со значением кучи, настроенным с помощью -Xmx.

.метрика, использующая ее теги и параметры запроса.Это описано в документации привода .Например, чтобы получить максимальную кучу памяти, вы должны использовать http://localhost:9001/actuator/metrics/jvm.memory.max?tag=area:heap.

...