玛卡巴卡的卡巴卡玛 发表于 昨天 22:29

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

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

GC(20) Pause Young (Normal) (G1 Evacuation Pause)

GC(20) Using 4 workers of 4 for evacuation

GC(20)   Pre Evacuate Collection Set: 1.6ms
GC(20)   Evacuate Collection Set: 71.8ms
GC(20)   Post Evacuate Collection Set: 17.7ms
GC(20)   Other: 1.0ms
GC(20) Eden regions: 594->0(593)
GC(20) Survivor regions: 20->21(77)
GC(20) Old regions: 66->66
GC(20) Humongous regions: 33->33
GC(20) Metaspace: 122710K(126592K)->122710K(126592K) NonClass: 107922K(110336K)->107922K(110336K) Class: 14787K(16256K)->14787K(16256K)
GC(20) Pause Young (Normal) (G1 Evacuation Pause) 711M->118M(1024M) 92.186ms
GC(20) User=0.29s Sys=0.00s Real=0.09s

1. GC开始

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任务

GC(20) Using 4 workers of 4 for evacuation


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

GC(20)   Pre Evacuate Collection Set: 1.6ms
GC(20)   Evacuate Collection Set: 71.8ms
GC(20)   Post Evacuate Collection Set: 17.7ms
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. 堆内存状态

GC(20) Eden regions: 594->0(593)
GC(20) Survivor regions: 20->21(77)
GC(20) Old regions: 66->66
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)状态

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总览

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时间

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企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: GC日志详细剖析,非常详细GC(20) Pause Young (Normal) (G1 Evacuation Pau