为了回答您的问题,Prometheus 展示格式的每个公开指标都提供了帮助文本:
# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the young generation memory pool after one GC to before the next
# 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"})