美文网首页
ZGC 日志理解

ZGC 日志理解

作者: Yellowtail | 来源:发表于2022-01-16 18:28 被阅读0次

概述

最近尝鲜在一些小的微服务里使用了 ZGC, 也打开了相关的 gc 日志,想体验一下10ms以内的暂停,苦于没有支持ZGC的jvm监控工具,只能通过gc日志来监控。但是之前一直看不懂zgc的日志,现在来研究一下(纯日志的研究,不涉及任何优化)并分享出来

如果对 ZGC 和 zgc日志 没有概念,可以先看一下 美团的这篇博客

jvm 参数

-XX:+UseZGC -XX:-OmitStackTraceInFastThrow -XX:+PrintCommandLineFlags -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/xxx/oom/ -Xlog:safepoint,classhisto*=trace,age*,gc*=info:file=/xxx/gc/gc-%p-%t.log:time,tid,tags:filecount=5,filesize=50m

  • -XX:+UseZGC 开启ZGC,因为我们使用的是Java 17,所以直接可以打开,如果是Java 11,需要使用两个参数配合开启 -XX:+UnlockExperimentalVMOptions -XX:+UseZGC
  • -XX:-OmitStackTraceInFastThrow 禁止快速抛异常,当同一个位置的反复出现异常的时候,jvm会在一定次数后只抛出一个简易异常,没有堆栈的那种,定位不便,所以给禁了。但是禁止之后对性能有影响
  • -XX:HeapDumpPath=/xxx/oom/ OOM之后自动 dump 内存到指定目录
  • -Xlog:classhisto*=trace,age*,gc*=info:file=/xxx/gc/gc-%p-%t.log:time,tid,tags:filecount=5,filesize=50m 来自美团,但是删除了安全点safepoint相关的配置(因为不知道干啥的-_-)

日志解读

大概看一下第一屏

image.png

[gc, init]

gc, init 是 gc 初始化的日志,打印相关的信息

[gc, start] Warmup

是触发 ZGC 开始回收内存的标识,
其中 [gc,start ] GC(0) Garbage Collection (Warmup) 是 服务刚启动时出现,一般不需要关注

找一个预热之后的回收日志

image.png

Garbage Collection (Proactive)

上图中这一行完整信息是 [2022-01-16T08:42:37.929+0000][10][gc,start ] GC(3) Garbage Collection (Proactive)
格式是jvm参数配置的,为:[时间] [线程号] [标记] 信息
关注一下信息部分
其中 GC(3) 这个3表示是第三次GC(看图中绿框得知,下一次数字就是4了)
Proactive 表示是GC的触发原因:ZGC默认的主动触发规则

以下是一次完整GC日志的解读,有些没有看懂的也都标注了

image.png

Garbage Collection Statistics

image.png

gc日志会大概间隔 10s 输出一次 统计信息,分别是 10秒、10分钟、10小时的统计信息
所以在应用负载很低的,没有触发 GC 的时候,这个统计信息会反复、重复出现
我最开始还以为是BUG

参考

美团-新一代垃圾回收器ZGC的探索与实践

相关文章

  • ZGC 日志理解

    概述 最近尝鲜在一些小的微服务里使用了 ZGC, 也打开了相关的 gc 日志,想体验一下10ms以内的暂停,苦于没...

  • ZGC源码分析(6)- 日志分析

    根据ZGC运行的情况,截取部分关键的日志信息。分析如下: ZGC初始化信息 这一部分主要是ZGC初始化的状态。从日...

  • ZGC 详解

    目录 ZGC简介和性能 ZGC流程介绍 ZGC堆的内存布局 ZGC对NUMA支持 颜色指针在ZGC中的运用 读屏障...

  • C4垃圾回收算法(可对比理解ZGC算法)

    为了理解ZGC算法,在网上查找资料时发现有文章称ZGC算法参考了C4垃圾回收算法,因此阅读了C4算法的论文C4: ...

  • 通过 Github 的 Actions 自动将 Issues 中

    原文记录:https://github.com/zhang0ZGC/zhang0ZGC/issues/11[htt...

  • ZGC

    ZGC介绍 Z Garbage Collector,即ZGC,基于Region内存布局,不设置分代, 使用了读屏障...

  • Java最前沿技术——ZGC

    ZGC介绍 ZGC(The Z Garbage Collector)是JDK 11中推出的一款追求极致低延迟的实验...

  • Jvm之ZGC垃圾收集器

    一、什么是ZGC? ZGC(The Z Garbage Collector)是JDK 11中推出的一款追求极致低延...

  • ZGC

    介绍 ZGC是JDK11之后带来的全新垃圾回收器,主要目标是降低停顿时间,但是会一定程度上降低吞吐量。 主要目标 ...

  • JVM 从入门到放弃之 ZGC 垃圾收集器

    ZGC 概述 Z Garbage Collector,也称为ZGC,在 jdk 11 中引入的一种可扩展的低延迟垃...

网友评论

      本文标题:ZGC 日志理解

      本文链接:https://www.haomeiwen.com/subject/uvbfhrtx.html