提问者:小点点

Spring执行器公制“jvm.memory.used”是什么计量单位?


我最近开始使用Spring Boot致动器的现有服务。我目前使用的是2.0.1.RELEASE版本。我已经成功启动并运行了Spring Actuator,我可以看到< code>/actuator/metrics页面启动并运行了metrics。我可以在jvm.memory.used指标各自的URL上访问这些指标,并使用各种标签进行深入查看。当我访问URL < code > http://localhost:8080/actuator/metrics/JVM . memory . used 时,我得到以下输出:

{"name":"jvm.memory.used","measurements":[{"statistic":"VALUE","value":7.71444944E8}],"availableTags":[{"tag":"area","values":["heap","nonheap"]},{"tag":"id","values":["Compressed Class Space","PS Survivor Space","PS Old Gen","Metaspace","PS Eden Space","Code Cache"]}]}

因此,我可以看到我使用的JVM内存是“7.71444944E8”(或者更简单地说是“771444944”)。然而,我很好奇,计量单位是什么,因为价值本身是没有意义的。只是字节吗?可能是MB还是GB?我假设答案只是字节。这是有道理的,但到目前为止,我找不到任何潜在的理由来支持这一点。

我尝试过谷歌搜索,但无济于事。我咨询了似乎是规范的Spring执行器文档,但我在那里也找不到任何答案。我还发现了一个类似的SO Q


共1个答案

匿名用户

好吧,我假设你在引擎盖下使用千分尺。

千分尺是一个Spring启动 2 度量库。

即使您不使用任何存储来管理指标(如Prometheus、DataDog等),您仍然有一些默认注册表。

现在,千分尺监控JVM并提供一些“开箱即用”的指标。在这里,您可以找到有关它的信息。

它使用了一个称为“活页夹”的概念,你对Jvm记忆计量学感兴趣。让我们看一下此活页夹的源代码。

注意以下代码:


            Gauge.builder("jvm.memory.used", memoryPoolBean, (mem) -> getUsageValue(mem, MemoryUsage::getUsed))
                .tags(tagsWithId)
                .description("The amount of used memory")
                .baseUnit(BaseUnits.BYTES)
                .register(registry);

它基本上从JVM内存的JMX中获取信息,该内存可用于每个java进程,并构建一个以字节为单位显示信息的仪表。

所以这是你的外壳,它显示在执行器中。