弹簧操动的“jvm.memory.max”公制和调用Runtime.getRuntime()之间的不匹配。maxMemory()

问题描述 投票:0回答:1

我想了春季启动器和查看“/actuator/metrics/jvm.memory.max”端点。

我也跑我用下面的JVM选项春启动的应用程序:

-Xmx104m

我创建了一个端点(“/记忆”返回总,免费,使用及最大内存的应用程序。我用这个调用Runtime.getRuntime()。getXXX()方法。

我有现在的问题是,该值Springboot的“jvm.memory.max”显示我以字节为单位不与-Xmx值,什么“/记忆”端点显示我匹配。

任何想法,为什么这种不匹配?

enter image description here

enter image description here

spring-boot jvm heap-memory spring-boot-actuator micrometer
1个回答
4
投票

春天开机使用千分尺其指标的支持。所述jvm.memory.max度量由Mirometer的JvmMemoryMetrics class使用MemoryPoolMXBean.getUsage().getMax()生产。

MemoyPoolMXBean公开有关这两种堆和非堆内存信息和千分尺的jvm.memory.max度量这些使用标签分离。在问题所示的输出,该值是所述堆和非堆内存组合这就是为什么它是不一样的,与配置-Xmx特定堆值。

你可以深入到使用它的标签和查询参数的度量。这是在执行器的documentation描述。例如,为了获得最大堆内存,你可以使用http://localhost:9001/actuator/metrics/jvm.memory.max?tag=area:heap

© www.soinside.com 2019 - 2024. All rights reserved.