三步轻松查看gc:

  1. 打开go代码所以路径,在路径中输入cmd,这样打开cmd的同时,进入代码所在路径

  2. 设置GODEBUG环境:set GODEBUG=gctrace=1

  3. go run xx.go


gc含义解释:

gc 4 @0.254s 5%: 2.0+1.0+9.9 ms clock, 16+0/2.0/2.0+79 ms cpu, 4->4->0 MB, 5 MB goal, 8 P

  • gc 4 :GC 执行次数的编号,每次叠加。第4次 GC。

  • @0.254s:自程序启动后到当前的具体秒数。:当前是程序启动后的 0.254s。

  • 5%:自程序启动以来在GC中花费的时间百分比。程序启动后到现在共花费 5% 的时间在 GC 上

  • 2.0+1.0+9.9ms clock:GC 的标记工作共使用的 CPU 时间占总 CPU 时间的百分比。

    • 2.0表示单个 P 在 mark 阶段的 STW 时间。(stop the world)

    • 1.0表示所有 P 的 mark concurrent(并发标记)所使用的时间。

    • 9.9表示单个 P 的 markTermination 阶段的 STW 时间

  • 16+0/2.0/2.0+79 ms cpu

    • 16:表示整个进程在 mark 阶段 STW 停顿的时间。

    • 0/2.0/2.0:0表示 mutator assist 占用的时间,2.0表示 dedicated + fractional 占用的时间,2.0 表示 idle 占用的时间。

  • 4->4->0 MB

    • 4表示开始 mark 阶段前的 heap_live 大小。

    • 4表示开始 markTermination 阶段前的 heap_live 大小。

    • 1表示被标记对象的大小。

  • 5 MB goal:表示下一次触发 GC 回收的阈值是 5 MB。

  • 8 P:本次 GC 一共涉及多少个 P