我正在尝试Spring Boot Actuator,并查看“/actuator/metrics/jvm.memory.max”端点。
我还使用以下JVM选项运行Springboot应用程序:
-Xmx104m
我创建了一个端点(“/memory”,它返回应用程序的总内存,可用内存,已用内存和最大内存。为此,我使用了Runtime.getRuntime()。getXXX()方法。
我的问题是Springboot的“jvm.memory.max”以字节为单位显示的值与-Xmx值以及“/memory”端点显示的内容不匹配。
有什么想法为什么不匹配?
最佳答案
Spring Boot使用Micrometer来提供指标支持。 jvm.memory.max
度量标准是Mirometer的JvmMemoryMetrics class使用MemoryPoolMXBean.getUsage().getMax()
生成的。MemoyPoolMXBean
公开有关堆和非堆内存的信息,而Micrometer使用jvm.memory.max
指标上的标签将它们分开。在问题显示的输出中,该值是堆内存和非堆内存的总和,这就是为什么它与使用-Xmx
配置的特定于堆的值不同的原因。
您可以使用其标签和查询参数来深入了解指标。这在执行器的documentation中进行了描述。例如,要获取最大堆内存,可以使用http://localhost:9001/actuator/metrics/jvm.memory.max?tag=area:heap。
关于spring-boot - Spring Actuator的 "jvm.memory.max"指标与Runtime.getRuntime()。maxMemory()不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54591870/