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