gpt4 book ai didi

java - Elastic APM中的 “jvm.gc.time”到底是什么,以及如何使用它?

转载 作者:行者123 更新时间:2023-12-02 22:54:13 24 4
gpt4 key购买 nike

我正在使用Elastic APM,并想找出垃圾收集器在一段时间内已经运行了多长时间。这是为了了解应用程序是否用完了内存,这似乎比仅检查已使用的堆更为准确,因为当堆空间有限时,垃圾收集可能会触发,然后释放大量内存。

Elastic APM将跟踪jvm.gc.time, flex 站点将其定义为:

The approximate accumulated collection elapsed time in milliseconds. Source



我以为这意味着自应用程序启动以来,垃圾回收已经花费了多少时间。我的计划是定期读取此值,并确定垃圾收集花费了多少时间间隔。

当我两次不同地读取此值时,结果是第二个,后来的读取实际上比第一次低。

初读
  • 星期一3月23日 14:27 :40 CDT 2020
  • jvm.gc.time = 2384

  • 二读
  • 星期一3月23日 14:30 :41 CDT 2020
  • jvm.gc.time = 2292

  • 谁能帮助我了解 jvm.gc.time捕获了什么?

    最佳答案

    这些指标直接来自java.lang.management.GarbageCollectorMXBeanjvm.gc.time度量的值取自GarbageCollectorMXBean.getCollectionTime,该值实际上自过程开始以来就在累积。

    假设您正在查看来自单个JVM的指标,则可能有几个原因导致该值似乎倒退:

  • 进程重新启动。
  • 该值适用于两个不同的GC“内存管理器”(例如G1青年一代,G1老年一代)

  • 如果该过程已重新启动(我希望您无论如何都会知道),那么Elasticsearch中的指标文档的 agent.ephemeral_id字段将具有不同的值。

    更有可能的答案是,您看到的是两个不同的内存管理器/ GC代的值,在这种情况下,Elasticsearch中的指标文档的 labels.name字段将具有不同的值。

    enter image description here

    关于java - Elastic APM中的 “jvm.gc.time”到底是什么,以及如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60820578/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com