Spring Boot 普罗米修斯,如何获得Java垃圾收集器的实际内存使用情况?

hrirmatl  于 2022-11-05  发布在  Spring
关注(0)|答案(1)|浏览(152)

Springboot应用程序中的Prometheus插件正在发送大量数据,我没有发现任何突出显示我从出口商那里得到的含义:

1) What does "jvm_gc_memory_allocated_bytes_total" mean?
2) What does "jvm_gc_memory_promoted_bytes_total" mean?

我需要的是Java垃圾收集器的实际内存使用情况,因此我希望该值始终低于2GB(最大内存大小),但目前为8GB,并且仍在上升。

"jvm_gc_memory_allocated_bytes_total"

"jvm_gc_memory_promoted_bytes_total"

是导出程序提供的仅有的两个与垃圾收集器相关的变量。

t40tm48m

t40tm48m1#

为了回答您的问题,我们以Prometheus说明格式为每个公开的指标提供了一个帮助文本:
# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC
# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC
这些度量累积年轻代中分配的字节和在垃圾收集中幸存下来的提升字节,因此它们被提升到老代。(非常简化)
从您的问题中,我认为您实际上不是在寻找“Java垃圾收集器的内存使用”,而是在寻找JVM的托管内存使用。这些托管片段在第一级被分为“堆”和“非堆”(area标记),可以通过id标记进一步深入研究。
以下是您可能需要的指标:

jvm_memory_used_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}
jvm_memory_committed_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}
jvm_memory_max_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}

因此,如果您想获得当前使用的堆,您需要使用以下PromQL将堆区域指标相加:

sum(jvm_memory_used_bytes{job="myjob", instance="myhost", area="heap"})

相关问题