GC日志详细剖析,非常详细GC(20) Pause Young (Normal) (G1 Evacuation Pau ...

打印 上一主题 下一主题

主题 650|帖子 650|积分 1950

在Java假造机(JVM)中,垃圾收集(GC)是内存管理的关键部门。分析GC日志可以帮助我们了解应用步伐的内存使用情况和GC性能。以下是对一段GC日志的详细剖析,涵盖了GC的不同阶段和相关信息。
  GC日志示例

  1. [16636.674s][info][gc,start     ] GC(20) Pause Young (Normal) (G1 Evacuation Pause)
  2. [16636.674s][info][gc,task      ] GC(20) Using 4 workers of 4 for evacuation
  3. [16636.766s][info][gc,phases    ] GC(20)   Pre Evacuate Collection Set: 1.6ms
  4. [16636.766s][info][gc,phases    ] GC(20)   Evacuate Collection Set: 71.8ms
  5. [16636.766s][info][gc,phases    ] GC(20)   Post Evacuate Collection Set: 17.7ms
  6. [16636.766s][info][gc,phases    ] GC(20)   Other: 1.0ms
  7. [16636.766s][info][gc,heap      ] GC(20) Eden regions: 594->0(593)
  8. [16636.766s][info][gc,heap      ] GC(20) Survivor regions: 20->21(77)
  9. [16636.766s][info][gc,heap      ] GC(20) Old regions: 66->66
  10. [16636.766s][info][gc,heap      ] GC(20) Humongous regions: 33->33
  11. [16636.766s][info][gc,metaspace ] GC(20) Metaspace: 122710K(126592K)->122710K(126592K) NonClass: 107922K(110336K)->107922K(110336K) Class: 14787K(16256K)->14787K(16256K)
  12. [16636.766s][info][gc           ] GC(20) Pause Young (Normal) (G1 Evacuation Pause) 711M->118M(1024M) 92.186ms
  13. [16636.766s][info][gc,cpu       ] GC(20) User=0.29s Sys=0.00s Real=0.09s
复制代码
1. GC开始

  1. [16636.674s][info][gc,start     ] GC(20) Pause Young (Normal) (G1 Evacuation Pause)
复制代码


  • 时间戳: 16636.674秒
  • GC类型: GC(20) 指第20次GC
  • GC事件: Pause Young (Normal) (G1 Evacuation Pause)

    • Pause Young: 这是一个年轻代GC事件。
    • Normal: 表示这是一个正常的GC事件,而非紧急或其他类型。
    • G1 Evacuation Pause: G1 GC的回收停息,主要是回收年轻代中的对象。

2. GC任务

  1. [16636.674s][info][gc,task      ] GC(20) Using 4 workers of 4 for evacuation
复制代码


  • 任务: GC(20) 使用了4个线程进行回收工作,这里有4个工作线程用于回收。
3. GC阶段

  1. [16636.766s][info][gc,phases    ] GC(20)   Pre Evacuate Collection Set: 1.6ms
  2. [16636.766s][info][gc,phases    ] GC(20)   Evacuate Collection Set: 71.8ms
  3. [16636.766s][info][gc,phases    ] GC(20)   Post Evacuate Collection Set: 17.7ms
  4. [16636.766s][info][gc,phases    ] GC(20)   Other: 1.0ms
复制代码


  • Pre Evacuate Collection Set: 1.6ms

    • 在开始实际的回收之前,进行的一些准备工作阶段。

  • Evacuate Collection Set: 71.8ms

    • 实际的回收阶段,即将对象从Eden区域转移到Survivor区域或老年代。

  • Post Evacuate Collection Set: 17.7ms

    • 回收后的清算和整理阶段。

  • Other: 1.0ms

    • 其他时间开销,好比同步和处置惩罚任务。

4. 堆内存状态

  1. [16636.766s][info][gc,heap      ] GC(20) Eden regions: 594->0(593)
  2. [16636.766s][info][gc,heap      ] GC(20) Survivor regions: 20->21(77)
  3. [16636.766s][info][gc,heap      ] GC(20) Old regions: 66->66
  4. [16636.766s][info][gc,heap      ] GC(20) Humongous regions: 33->33
复制代码


  • Eden regions: 594->0(593)

    • 594->0: Eden区域的数量从594镌汰到0,这表示全部Eden区域中的对象都已经被转移。
    • (593): 当前统共有593个Eden区域,阐明有一个区域大概在这次GC中未被使用或预留。

  • Survivor regions: 20->21(77)

    • 20->21: Survivor区域的数量从20增长到21。这通常表示年轻代中的对象已经移动到Survivor区域。
    • (77): 当前统共有77个Survivor区域。

  • Old regions: 66->66

    • 66->66: 老年代区域的数量保持不变,阐明老年代没有发生变革。

  • Humongous regions: 33->33

    • 33->33: Humongous区域的数量保持不变,阐明没有大的对象被移动或回收。

5. 元空间(Metaspace)状态

  1. [16636.766s][info][gc,metaspace ] GC(20) Metaspace: 122710K(126592K)->122710K(126592K) NonClass: 107922K(110336K)->107922K(110336K) Class: 14787K(16256K)->14787K(16256K)
复制代码


  • Metaspace: 122710K(126592K)->122710K(126592K)

    • 122710K(126592K): Metaspace的使用量和最大容量保持不变。

  • NonClass: 107922K(110336K)->107922K(110336K)

    • 107922K(110336K): 非类数据的使用量和最大容量保持不变。

  • Class: 14787K(16256K)->14787K(16256K)

    • 14787K(16256K): 类数据的使用量和最大容量保持不变。

6. GC总览

  1. [16636.766s][info][gc           ] GC(20) Pause Young (Normal) (G1 Evacuation Pause) 711M->118M(1024M) 92.186ms
复制代码


  • Pause Young (Normal) (G1 Evacuation Pause): 同前文。
  • 711M->118M(1024M): GC前后年轻代的堆内存使用情况,711MB镌汰到118MB,总堆巨细为1024MB。
  • 92.186ms: GC的总停息时间,即GC完成所花费的时间。
7. CPU时间

  1. [16636.766s][info][gc,cpu       ] GC(20) User=0.29s Sys=0.00s Real=0.09s
复制代码


  • User: GC操纵斲丧的用户态CPU时间,0.29秒。
  • Sys: GC操纵斲丧的体系态CPU时间,0.00秒。
  • Real: GC操纵的实际时间,0.09秒。实际时间比用户态和体系态CPU时间短,阐明GC在处置惩罚时涉及的其他任务很少。
总结

这段GC日志详细记录了第20次垃圾收集的过程及其效果。主要关注点包罗GC的各个阶段耗时、堆内存的变革情况、元空间的使用状态,以及GC的总停息时间和CPU斲丧。这些信息有助于识别内存管理题目、优化GC性能,并改进Java应用步伐的运行效率。
通过对GC日志的深入分析,我们可以:

  • 评估GC的性能,并确定是否需要调解JVM参数。
  • 识别内存分配和回收的瓶颈,优化内存使用计谋。
  • 监控长时间运行中的GC模式和变革趋势,从而做出适当的优化调解。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表