DEV Community

Truman
Truman

Posted on

ZGC Major Collection (Proactive) 日志详解

JVM相关参数 -Xms10G -Xmx10G -Xmn5G -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UseZGC -XX:+ZGenerational

日志信息

[2024-06-12T19:42:28.946+0800][info][gc          ] GC(13451) Major Collection (Proactive)
[2024-06-12T19:42:28.946+0800][info][gc,task     ] GC(13451) Using 1 Workers for Young Generation
[2024-06-12T19:42:28.946+0800][info][gc,task     ] GC(13451) Using 1 Workers for Old Generation
[2024-06-12T19:42:28.946+0800][info][gc,phases   ] GC(13451) Y: Young Generation
[2024-06-12T19:42:28.946+0800][info][gc,phases   ] GC(13451) Y: Pause Mark Start (Major) 0.043ms
[2024-06-12T19:42:29.060+0800][info][gc,phases   ] GC(13451) Y: Concurrent Mark 113.772ms
[2024-06-12T19:42:29.060+0800][info][gc,phases   ] GC(13451) Y: Pause Mark End 0.018ms
[2024-06-12T19:42:29.060+0800][info][gc,phases   ] GC(13451) Y: Concurrent Mark Free 0.001ms
[2024-06-12T19:42:29.060+0800][info][gc,phases   ] GC(13451) Y: Concurrent Reset Relocation Set 0.013ms
[2024-06-12T19:42:29.062+0800][info][gc,reloc    ] GC(13451) Y: Using tenuring threshold: 4 (Computed)
[2024-06-12T19:42:29.064+0800][info][gc,phases   ] GC(13451) Y: Concurrent Select Relocation Set 4.493ms
[2024-06-12T19:42:29.064+0800][info][gc,phases   ] GC(13451) Y: Pause Relocate Start 0.020ms
[2024-06-12T19:42:29.115+0800][info][gc,phases   ] GC(13451) Y: Concurrent Relocate 50.472ms
[2024-06-12T19:42:29.115+0800][info][gc,alloc    ] GC(13451) Y:                         Mark Start        Mark End      Relocate Start    Relocate End
[2024-06-12T19:42:29.115+0800][info][gc,alloc    ] GC(13451) Y: Allocation Stalls:          0                0                0                0
[2024-06-12T19:42:29.115+0800][info][gc,load     ] GC(13451) Y: Load: 0.81 (2%) / 0.95 (2%) / 1.18 (2%)
[2024-06-12T19:42:29.115+0800][info][gc,mmu      ] GC(13451) Y: MMU: 2ms/96.4%, 5ms/98.4%, 10ms/99.2%, 20ms/99.6%, 50ms/99.8%, 100ms/99.9%
[2024-06-12T19:42:29.115+0800][info][gc,marking  ] GC(13451) Y: Mark: 1 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s)
[2024-06-12T19:42:29.115+0800][info][gc,marking  ] GC(13451) Y: Mark Stack Usage: 32M
[2024-06-12T19:42:29.115+0800][info][gc,nmethod  ] GC(13451) Y: NMethods: 10884 registered, 686 unregistered
[2024-06-12T19:42:29.115+0800][info][gc,metaspace] GC(13451) Y: Metaspace: 144M used, 145M committed, 400M reserved
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y:                        Candidates     Selected     In-Place         Size        Empty    Relocated
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Small Pages:                 1824         1611            0        3648M         396M          23M
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Medium Pages:                   1            0            0          32M           0M           0M
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Large Pages:                    0            0            0           0M           0M           0M
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Forwarding Usage: 15M
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Age Table:
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y:                    Live             Garbage             Small              Medium             Large
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Eden              18M (0%)         3595M (35%)       1791 / 1581           1 / 0              0 / 0
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Survivor 1         4M (0%)           49M (0%)          27 / 25             0 / 0              0 / 0
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Survivor 2         0M (0%)            1M (0%)           1 / 1              0 / 0              0 / 0
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Survivor 3         1M (0%)            4M (0%)           3 / 2              0 / 0              0 / 0
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Survivor 4         0M (0%)            1M (0%)           1 / 1              0 / 0              0 / 0
[2024-06-12T19:42:29.115+0800][info][gc,reloc    ] GC(13451) Y: Survivor 5         0M (0%)            1M (0%)           1 / 1              0 / 0              0 / 0
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y: Min Capacity: 8192M(80%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y: Max Capacity: 10240M(100%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y: Soft Max Capacity: 8192M(80%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y: Heap Statistics:
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:                Mark Start          Mark End        Relocate Start      Relocate End           High               Low
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:  Capacity:     8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:      Free:     6110M (60%)        6072M (59%)        6466M (63%)        9642M (94%)        9642M (94%)        6072M (59%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:      Used:     4130M (40%)        4168M (41%)        3774M (37%)         598M (6%)         4168M (41%)         598M (6%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y: Young Generation Statistics:
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:                Mark Start          Mark End        Relocate Start      Relocate End
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:      Used:     3680M (36%)        3718M (36%)        3324M (32%)         146M (1%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:      Live:         -                26M (0%)           26M (0%)           25M (0%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:   Garbage:         -              3653M (36%)        3257M (32%)          32M (0%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y: Allocated:         -                38M (0%)           40M (0%)           88M (1%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y: Reclaimed:         -                  -               396M (4%)         3621M (35%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y:  Promoted:         -                  -                 0M (0%)            0M (0%)
[2024-06-12T19:42:29.115+0800][info][gc,heap     ] GC(13451) Y: Compacted:         -                  -                  -                23M (0%)
[2024-06-12T19:42:29.115+0800][info][gc,phases   ] GC(13451) Y: Young Generation 4130M(40%)->598M(6%) 0.169s
[2024-06-12T19:42:29.115+0800][info][gc,phases   ] GC(13451) O: Old Generation
[2024-06-12T19:42:29.632+0800][info][gc,phases   ] GC(13451) O: Concurrent Mark 516.540ms
[2024-06-12T19:42:29.632+0800][info][gc,phases   ] GC(13451) O: Pause Mark End 0.021ms
[2024-06-12T19:42:29.632+0800][info][gc,phases   ] GC(13451) O: Concurrent Mark Free 0.001ms
[2024-06-12T19:42:29.657+0800][info][gc,phases   ] GC(13451) O: Concurrent Process Non-Strong 24.929ms
[2024-06-12T19:42:29.657+0800][info][gc,phases   ] GC(13451) O: Concurrent Reset Relocation Set 0.002ms
[2024-06-12T19:42:29.659+0800][info][gc,phases   ] GC(13451) O: Concurrent Select Relocation Set 2.376ms
[2024-06-12T19:42:29.659+0800][info][gc,task     ] GC(13451) O: Using 1 Workers for Old Generation
[2024-06-12T19:42:29.689+0800][info][gc,task     ] GC(13451) O: Using 1 Workers for Old Generation
[2024-06-12T19:42:29.689+0800][info][gc,phases   ] GC(13451) O: Concurrent Remap Roots 29.523ms
[2024-06-12T19:42:29.689+0800][info][gc,phases   ] GC(13451) O: Pause Relocate Start 0.018ms
[2024-06-12T19:42:29.692+0800][info][gc,phases   ] GC(13451) O: Concurrent Relocate 3.222ms
[2024-06-12T19:42:29.692+0800][info][gc,alloc    ] GC(13451) O:                         Mark Start        Mark End      Relocate Start    Relocate End
[2024-06-12T19:42:29.692+0800][info][gc,alloc    ] GC(13451) O: Allocation Stalls:          0                0                0                0
[2024-06-12T19:42:29.692+0800][info][gc,load     ] GC(13451) O: Load: 0.81 (2%) / 0.95 (2%) / 1.18 (2%)
[2024-06-12T19:42:29.692+0800][info][gc,mmu      ] GC(13451) O: MMU: 2ms/96.4%, 5ms/98.4%, 10ms/99.2%, 20ms/99.6%, 50ms/99.8%, 100ms/99.9%
[2024-06-12T19:42:29.692+0800][info][gc,marking  ] GC(13451) O: Mark: 1 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s)
[2024-06-12T19:42:29.692+0800][info][gc,marking  ] GC(13451) O: Mark Stack Usage: 32M
[2024-06-12T19:42:29.692+0800][info][gc,nmethod  ] GC(13451) O: NMethods: 10884 registered, 686 unregistered
[2024-06-12T19:42:29.692+0800][info][gc,metaspace] GC(13451) O: Metaspace: 144M used, 145M committed, 400M reserved
[2024-06-12T19:42:29.692+0800][info][gc,ref      ] GC(13451) O:                       Encountered   Discovered     Enqueued
[2024-06-12T19:42:29.692+0800][info][gc,ref      ] GC(13451) O: Soft References:             3116          447            0
[2024-06-12T19:42:29.692+0800][info][gc,ref      ] GC(13451) O: Weak References:            16558         9265            0
[2024-06-12T19:42:29.692+0800][info][gc,ref      ] GC(13451) O: Final References:              87            0            0
[2024-06-12T19:42:29.692+0800][info][gc,ref      ] GC(13451) O: Phantom References:          2401         1944          704
[2024-06-12T19:42:29.692+0800][info][gc,reloc    ] GC(13451) O:                        Candidates     Selected     In-Place         Size        Empty    Relocated
[2024-06-12T19:42:29.692+0800][info][gc,reloc    ] GC(13451) O: Small Pages:                  177            6            0         354M           0M           1M
[2024-06-12T19:42:29.692+0800][info][gc,reloc    ] GC(13451) O: Medium Pages:                   3            0            0          96M           0M           0M
[2024-06-12T19:42:29.692+0800][info][gc,reloc    ] GC(13451) O: Large Pages:                    0            0            0           0M           0M           0M
[2024-06-12T19:42:29.692+0800][info][gc,reloc    ] GC(13451) O: Forwarding Usage: 1M
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O: Min Capacity: 8192M(80%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O: Max Capacity: 10240M(100%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O: Soft Max Capacity: 8192M(80%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O: Heap Statistics:
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O:                Mark Start          Mark End        Relocate Start      Relocate End           High               Low
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O:  Capacity:     8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O:      Free:     6110M (60%)        9320M (91%)        9272M (91%)        9278M (91%)        9642M (94%)        6072M (59%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O:      Used:     4130M (40%)         920M (9%)          968M (9%)          962M (9%)         4168M (41%)         598M (6%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O: Old Generation Statistics:
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O:                Mark Start          Mark End        Relocate Start      Relocate End
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O:      Used:      450M (4%)          452M (4%)          452M (4%)          444M (4%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O:      Live:         -               387M (4%)          387M (4%)          387M (4%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O:   Garbage:         -                62M (1%)           62M (1%)           49M (0%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O: Allocated:         -                 2M (0%)            2M (0%)            6M (0%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O: Reclaimed:         -                  -                 0M (0%)           12M (0%)
[2024-06-12T19:42:29.692+0800][info][gc,heap     ] GC(13451) O: Compacted:         -                  -                  -                 1M (0%)
[2024-06-12T19:42:29.692+0800][info][gc,phases   ] GC(13451) O: Old Generation 598M(6%)->962M(9%) 0.577s
[2024-06-12T19:42:29.692+0800][info][gc          ] GC(13451) Major Collection (Proactive) 4130M(40%)->962M(9%) 0.746s
Enter fullscreen mode Exit fullscreen mode

主要信息:

  • GC类型: 主动全堆垃圾收集(Proactive Major Collection)
  • 内存变化:
    • 年轻代: 从 4130M(40%)减少到 598M(6%)
    • 老年代: 从 450M(4%)增加到 962M(9%)

阶段信息:

  • 年轻代(Young Generation):
    • Pause Mark Start: 0.043毫秒
    • Concurrent Mark: 113.772毫秒
    • Pause Mark End: 0.018毫秒
    • Concurrent Mark Free: 0.001毫秒
    • Concurrent Reset Relocation Set: 0.013毫秒
    • Concurrent Select Relocation Set: 4.493毫秒
    • Pause Relocate Start: 0.020毫秒
    • Concurrent Relocate: 50.472毫秒
    • 年轻代总暂停时间: 0.043毫秒 + 0.018毫秒 + 0.020毫秒 = 0.081毫秒
    • 年轻代内存变化: 4130M(40%)减少到 598M(6%),用时 0.169秒
  • 老年代(Old Generation):
    • Concurrent Mark: 516.540毫秒
    • Pause Mark End: 0.021毫秒
    • Concurrent Mark Free: 0.001毫秒
    • Concurrent Process Non-Strong: 24.929毫秒
    • Concurrent Reset Relocation Set: 0.002毫秒
    • Concurrent Select Relocation Set: 2.376毫秒
    • Pause Relocate Start: 0.018毫秒
    • Concurrent Relocate: 3.222毫秒
    • 老年代总暂停时间: 0.021毫秒 + 0.018毫秒 = 0.039毫秒
    • 老年代内存变化: 450M(4%)增加到 962M(9%),用时 0.577秒

总的暂停时间: 0.081毫秒(年轻代)+ 0.039毫秒(老年代) = 0.120毫秒
垃圾收集总时间: 0.746秒

[info][gc,phases   ] GC(13451) Y: Young Generation
[info][gc,phases   ] GC(13451) Y: Pause Mark Start (Major) 0.043ms
[info][gc,phases   ] GC(13451) Y: Concurrent Mark 113.772ms
[info][gc,phases   ] GC(13451) Y: Pause Mark End 0.018ms
[info][gc,phases   ] GC(13451) Y: Concurrent Mark Free 0.001ms
[info][gc,phases   ] GC(13451) Y: Concurrent Reset Relocation Set 0.013ms
[info][gc,reloc    ] GC(13451) Y: Using tenuring threshold: 4 (Computed)
[info][gc,phases   ] GC(13451) Y: Concurrent Select Relocation Set 4.493ms
[info][gc,phases   ] GC(13451) Y: Pause Relocate Start 0.020ms
[info][gc,phases   ] GC(13451) Y: Concurrent Relocate 50.472ms
Enter fullscreen mode Exit fullscreen mode

Young Generation:

  • Pause Mark Start:
    • 时间:2024-06-12T19:42:28.946+0800
    • 描述:这个阶段是年轻代标记阶段的开始,JVM 暂停应用线程以开始标记存活对象。
    • 暂停时间:0.043 毫秒
  • Concurrent Mark:
    • 时间:2024-06-12T19:42:29.060+0800
    • 描述:并发标记阶段,JVM 在不暂停应用线程的情况下,标记所有存活对象。
    • 持续时间:113.772 毫秒
  • Pause Mark End:
    • 时间:2024-06-12T19:42:29.060+0800
    • 描述:这个阶段是并发标记阶段的结束,JVM 再次短暂暂停应用线程以完成标记工作。
    • 暂停时间:0.018 毫秒
  • Concurrent Mark Free:
    • 时间:2024-06-12T19:42:29.060+0800
    • 描述:并发标记释放阶段,清理在标记过程中已确定为垃圾的对象。
    • 持续时间:0.001 毫秒
  • Concurrent Reset Relocation Set:
    • 时间:2024-06-12T19:42:29.060+0800
    • 描述:并发重置重定位集阶段,为重定位阶段做准备。
    • 持续时间:0.013 毫秒
  • Using tenuring threshold: 4 (Computed):
    • 时间:2024-06-12T19:42:29.062+0800
    • 描述:设置晋升阈值,决定对象在晋升到老年代前在年轻代的存活次数。晋升阈值不是一个静态值;它是由JVM根据应用程序的运行时特性动态计算的。JVM持续监控对象分配和存活的行为,调整阈值以优化GC性能。
    • 阈值:4
  • Concurrent Select Relocation Set:
    • 时间:2024-06-12T19:42:29.064+0800
    • 描述:并发选择重定位集阶段,选择需要被移动的对象集。
    • 持续时间:4.493 毫秒
  • Pause Relocate Start:
    • 时间:2024-06-12T19:42:29.064+0800
    • 描述:开始重定位阶段,JVM 再次短暂暂停应用线程以开始对象的重定位。
    • 暂停时间:0.020 毫秒
  • Concurrent Relocate:
    • 时间:2024-06-12T19:42:29.115+0800
    • 描述:并发重定位阶段,在不暂停应用线程的情况下,将存活对象移动到新的位置。
    • 持续时间:50.472 毫秒
[info][gc,alloc    ] GC(13451) Y:                         Mark Start        Mark End      Relocate Start    Relocate End
[info][gc,alloc    ] GC(13451) Y: Allocation Stalls:          0                0                0                0
Enter fullscreen mode Exit fullscreen mode

ZGC年轻代垃圾回收过程中的内存分配暂停情况。

  • Mark Start:标记开始阶段的内存分配暂停次数。
  • Mark End:标记结束阶段的内存分配暂停次数。
  • Relocate Start:重定位开始阶段的内存分配暂停次数。
  • Relocate End:重定位结束阶段的内存分配暂停次数。

Allocation Stalls:这一列表示在各个阶段内存分配的暂停次数。从日志可以看出,在标记开始、标记结束、重定位开始和重定位结束阶段,内存分配暂停次数均为0。这表明在整个年轻代GC过程中,没有发生任何内存分配暂停。

[info][gc,load     ] GC(13451) Y: Load: 0.81 (2%) / 0.95 (2%) / 1.18 (2%)
Enter fullscreen mode Exit fullscreen mode

这显示了GC期间系统的负载。三个数值分别表示1分钟、5分钟和15分钟的平均负载,括号内的数值为GC期间的CPU占用率。

[info][gc,mmu      ] GC(13451) Y: MMU: 2ms/96.4%, 5ms/98.4%, 10ms/99.2%, 20ms/99.6%, 50ms/99.8%, 100ms/99.9%
Enter fullscreen mode Exit fullscreen mode

Minimum Mutator Utilization:这是一个关键的性能指标,表示在不同时间窗口内,应用线程的可用率。它描述了在这些时间窗口内应用线程可用的最小百分比。

[info][gc,marking  ] GC(13451) Y: Mark: 1 stripe(s), 2 proactive flush(es), 1 terminate flush(es), 0 completion(s), 0 continuation(s)
Enter fullscreen mode Exit fullscreen mode

这个记录了GC标记阶段的细节。stripe(s)表示标记阶段被分割成的条纹数量,proactive flush(es)和terminate flush(es)表示主动刷新和终止刷新次数,completion(s)和continuation(s)则记录了完成和继续标记的次数。

[info][gc,marking  ] GC(13451) Y: Mark Stack Usage: 32M
Enter fullscreen mode Exit fullscreen mode

这是标记阶段使用的堆栈大小,32M表示在标记过程中使用了32MB的堆栈空间。

[info][gc,nmethod  ] GC(13451) Y: NMethods: 10884 registered, 686 unregistered
Enter fullscreen mode Exit fullscreen mode

这是JIT编译的方法数量,表示注册了10884个方法,并且有686个方法被注销。这里的“unregistered”表示这些方法曾经被JIT编译并注册过,但现在已经被注销或从代码缓存中移除。这通常发生在方法不再需要时,或者当代码缓存需要回收空间以用于新的编译方法时。

[info][gc,metaspace] GC(13451) Y: Metaspace: 144M used, 145M committed, 400M reserved
Enter fullscreen mode Exit fullscreen mode

记录了元空间的使用情况。144M used表示已经使用的内存,145M committed表示已经分配的内存,400M reserved表示保留的内存。

[info][gc,reloc    ] GC(13451) Y:                        Candidates     Selected     In-Place         Size        Empty    Relocated
[info][gc,reloc    ] GC(13451) Y: Small Pages:                 1824         1611            0        3648M         396M          23M
[info][gc,reloc    ] GC(13451) Y: Medium Pages:                   1            0            0          32M           0M           0M
[info][gc,reloc    ] GC(13451) Y: Large Pages:                    0            0            0           0M           0M           0M
[info][gc,reloc    ] GC(13451) Y: Forwarding Usage: 15M
Enter fullscreen mode Exit fullscreen mode

这段日志记录了ZGC年轻代垃圾回收过程中内存页面的重定位信息。

  • Candidates:
    • 表示候选页面的数量。这些页面是GC认为可能需要重定位的页面。
    • Small Pages: 1824 个候选页面
    • Medium Pages: 1 个候选页面
    • Large Pages: 0 个候选页面
  • Selected:
    • 表示实际选择用于重定位的页面数量。
    • Small Pages: 1611 个页面被选择用于重定位
    • Medium Pages: 0 个页面被选择
    • Large Pages: 0 个页面被选择
  • In-Place:
    • 表示那些可以在原地进行重定位的页面数量。这些页面无需移动到其他位置。
    • Small Pages: 0 个页面
    • Medium Pages: 0 个页面
    • Large Pages: 0 个页面
  • Size:
    • 表示这些页面的总大小。
    • Small Pages: 总大小为 3648MB
    • Medium Pages: 总大小为 32MB
    • Large Pages: 总大小为 0MB
  • Empty:
    • 表示在重定位过程中被标记为空的页面大小。
    • Small Pages: 396MB 被标记为空
    • Medium Pages: 0MB 被标记为空
    • Large Pages: 0MB 被标记为空
  • Relocated:
    • 表示实际被重定位的页面大小。
    • Small Pages: 23MB 被重定位
    • Medium Pages: 0MB 被重定位
    • Large Pages: 0MB 被重定位
  • Forwarding Usage:
    • 表示在重定位过程中使用的转发指针的大小。
    • Forwarding Usage: 15MB
[info][gc,reloc    ] GC(13451) Y: Age Table:
[info][gc,reloc    ] GC(13451) Y:                    Live             Garbage             Small              Medium             Large
[info][gc,reloc    ] GC(13451) Y: Eden              18M (0%)         3595M (35%)       1791 / 1581           1 / 0              0 / 0
[info][gc,reloc    ] GC(13451) Y: Survivor 1         4M (0%)           49M (0%)          27 / 25             0 / 0              0 / 0
[info][gc,reloc    ] GC(13451) Y: Survivor 2         0M (0%)            1M (0%)           1 / 1              0 / 0              0 / 0
[info][gc,reloc    ] GC(13451) Y: Survivor 3         1M (0%)            4M (0%)           3 / 2              0 / 0              0 / 0
[info][gc,reloc    ] GC(13451) Y: Survivor 4         0M (0%)            1M (0%)           1 / 1              0 / 0              0 / 0
[info][gc,reloc    ] GC(13451) Y: Survivor 5         0M (0%)            1M (0%)           1 / 1              0 / 0              0 / 0
Enter fullscreen mode Exit fullscreen mode

这段日志记录了ZGC在年轻代垃圾回收过程中各个年龄段的内存状态。

  • Age Table (年龄表):
    • 表示ZGC在内存中的不同年龄段的对象分布。
    • 包含了三个主要字段:Live(存活对象),Garbage(垃圾对象),Small(小页面),Medium(中页面),Large(大页面)。
  • Eden:

    • Live: 18M (0%) 表示在伊甸区的存活对象占用18MB,占总内存的0%。
    • Garbage: 3595M (35%) 表示在伊甸区的垃圾对象占用3595MB,占总内存的35%。
    • Small: 1791 / 1581 表示有1791个小页面候选页面中有1581个被选择用于重定位。
    • Medium: 1 / 0 表示有1个中页面候选页面,没有被选择用于重定位。
    • Large: 0 / 0 表示没有大页面候选页面。
  • Survivor:

    • Survivor 1:
      • Live: 4M (0%) 表示在Survivor 1区的存活对象占用4MB,占总内存的0%。
      • Garbage: 49M (0%) 表示在Survivor 1区的垃圾对象占用49MB,占总内存的0%。
      • Small: 27 / 25 表示有27个小页面候选页面中有25个被选择用于重定位。
      • Medium: 0 / 0 表示没有中页面候选页面。
      • Large: 0 / 0 表示没有大页面候选页面。
    • Survivor 2:
      • Live: 0M (0%) 表示在Survivor 2区的存活对象占用0MB,占总内存的0%。
      • Garbage: 1M (0%) 表示在Survivor 2区的垃圾对象占用1MB,占总内存的0%。
      • Small: 1 / 1 表示有1个小页面候选页面,有1个被选择用于重定位。
      • Medium: 0 / 0 表示没有中页面候选页面。
      • Large: 0 / 0 表示没有大页面候选页面。
    • Survivor 3:
      • Live: 1M (0%) 表示在Survivor 3区的存活对象占用1MB,占总内存的0%。
      • Garbage: 4M (0%) 表示在Survivor 3区的垃圾对象占用4MB,占总内存的0%。
      • Small: 3 / 2 表示有3个小页面候选页面中有2个被选择用于重定位。
      • Medium: 0 / 0 表示没有中页面候选页面。
      • Large: 0 / 0 表示没有大页面候选页面。
    • Survivor 4:
      • Live: 0M (0%) 表示在Survivor 4区的存活对象占用0MB,占总内存的0%。
      • Garbage: 1M (0%) 表示在Survivor 4区的垃圾对象占用1MB,占总内存的0%。
      • Small: 1 / 1 表示有1个小页面候选页面,有1个被选择用于重定位。
      • Medium: 0 / 0 表示没有中页面候选页面。
      • Large: 0 / 0 表示没有大页面候选页面。
    • Survivor 5:
      • Live: 0M (0%) 表示在Survivor 5区的存活对象占用0MB,占总内存的0%。
      • Garbage: 1M (0%) 表示在Survivor 5区的垃圾对象占用1MB,占总内存的0%。
      • Small: 1 / 1 表示有1个小页面候选页面,有1个被选择用于重定位。
      • Medium: 0 / 0 表示没有中页面候选页面。
      • Large: 0 / 0 表示没有大页面候选页面。
[info][gc,heap     ] GC(13451) Y: Min Capacity: 8192M(80%)
[info][gc,heap     ] GC(13451) Y: Max Capacity: 10240M(100%)
[info][gc,heap     ] GC(13451) Y: Soft Max Capacity: 8192M(80%)
Enter fullscreen mode Exit fullscreen mode

这段日志记录了ZGC中关于堆内存容量的配置情况。

  • Min Capacity (最小容量):
    • 值:8192M (80%)
    • 解释:表示堆内存的最小容量为8192MB,占最大堆内存容量的80%。这是ZGC在初始化时预留的内存。
  • Max Capacity (最大容量):
    • 值:10240M (100%)
    • 解释:表示堆内存的最大容量为10240MB,占最大堆内存容量的100%。这是JVM进程可以使用的最大内存容量。
  • Soft Max Capacity (软最大容量):
    • 值:8192M (80%)
    • 解释:表示堆内存的软最大容量为8192MB,占最大堆内存容量的80%。这是ZGC试图维持的内存使用上限。如果超过这个值,ZGC会努力回收垃圾,以减少内存使用,但不会强制限制内存使用在这个值以下。
[info][gc,heap     ] GC(13451) Y: Heap Statistics:
[info][gc,heap     ] GC(13451) Y:                Mark Start          Mark End        Relocate Start      Relocate End           High               Low
[info][gc,heap     ] GC(13451) Y:  Capacity:     8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)        8360M (82%)
[info][gc,heap     ] GC(13451) Y:      Free:     6110M (60%)        6072M (59%)        6466M (63%)        9642M (94%)        9642M (94%)        6072M (59%)
[info][gc,heap     ] GC(13451) Y:      Used:     4130M (40%)        4168M (41%)        3774M (37%)         598M (6%)         4168M (41%)         598M (6%)
Enter fullscreen mode Exit fullscreen mode

这段日志记录了GC(垃圾收集)过程中堆内存的统计信息。

  • Capacity (容量):
    • 值:8360M (82%)
    • 解释:堆内存的容量在整个垃圾回收过程中的各个阶段(标记开始、标记结束、重定位开始、重定位结束)保持一致,为8360MB,占最大堆内存容量的82%。
  • Free (空闲内存):
    • 值:
      • 标记开始:6110M (60%)
      • 标记结束:6072M (59%)
      • 重定位开始:6466M (63%)
      • 重定位结束:9642M (94%)
      • 高水位:9642M (94%)
      • 低水位:6072M (59%)
    • 解释:这是在不同阶段堆内存中空闲的内存量。可以看出,在重定位结束后,空闲内存达到了9642MB,占最大堆内存容量的94%。
  • Used (已用内存):
    • 值:
      • 标记开始:4130M (40%)
      • 标记结束:4168M (41%)
      • 重定位开始:3774M (37%)
      • 重定位结束:598M (6%)
      • 高水位:4168M (41%)
      • 低水位:598M (6%)
    • 解释:这是在不同阶段堆内存中已用的内存量。在重定位结束后,已用内存减少到598MB,占最大堆内存容量的6%。
[info][gc,heap     ] GC(13451) Y: Young Generation Statistics:
[info][gc,heap     ] GC(13451) Y:                Mark Start          Mark End        Relocate Start      Relocate End
[info][gc,heap     ] GC(13451) Y:      Used:     3680M (36%)        3718M (36%)        3324M (32%)         146M (1%)
[info][gc,heap     ] GC(13451) Y:      Live:         -                26M (0%)           26M (0%)           25M (0%)
[info][gc,heap     ] GC(13451) Y:   Garbage:         -              3653M (36%)        3257M (32%)          32M (0%)
[info][gc,heap     ] GC(13451) Y: Allocated:         -                38M (0%)           40M (0%)           88M (1%)
[info][gc,heap     ] GC(13451) Y: Reclaimed:         -                  -               396M (4%)         3621M (35%)
[info][gc,heap     ] GC(13451) Y:  Promoted:         -                  -                 0M (0%)            0M (0%)
[info][gc,heap     ] GC(13451) Y: Compacted:         -                  -                  -                23M (0%)
[info][gc,phases   ] GC(13451) Y: Young Generation 4130M(40%)->598M(6%) 0.169s
Enter fullscreen mode Exit fullscreen mode

这段日志详细记录了GC(垃圾收集)过程中年轻代内存的统计信息。

  • Used (已用内存):
    • 值:
      • 标记开始:3680M (36%)
      • 标记结束:3718M (36%)
      • 重定位开始:3324M (32%)
      • 重定位结束:146M (1%)
    • 解释:年轻代在不同阶段的已用内存量。在重定位结束后,已用内存显著减少到146MB,占最大年轻代内存的1%。
  • Live (存活内存):
    • 值:
      • 标记结束:26M (0%)
      • 重定位开始:26M (0%)
      • 重定位结束:25M (0%)
    • 解释:在标记阶段结束和重定位阶段,存活内存量基本保持不变,说明大部分对象在GC过程中被标记为垃圾并被回收。
  • Garbage (垃圾内存):
    • 值:
      • 标记结束:3653M (36%)
      • 重定位开始:3257M (32%)
      • 重定位结束:32M (0%)
    • 解释:在标记阶段结束时有3653MB的垃圾内存,重定位开始时减少到3257MB,重定位结束后减少到32MB,表明大量垃圾内存被成功回收。
  • Allocated (分配内存):
    • 值:
      • 标记结束:38M (0%)
      • 重定位开始:40M (0%)
      • 重定位结束:88M (1%)
    • 解释:在GC过程中,内存分配的变化情况。从标记结束到重定位结束,分配的内存量增加到88MB,占最大年轻代内存的1%。
  • Reclaimed (回收内存):
    • 值:
      • 重定位开始:396M (4%)
      • 重定位结束:3621M (35%)
    • 解释:在重定位过程中,回收了大量内存,从396MB增加到3621MB,表明垃圾收集器在重定位阶段的有效性。
  • Promoted (晋升内存):
    • 值:
      • 标记结束:0M (0%)
      • 重定位开始:0M (0%)
      • 重定位结束:0M (0%)
    • 解释:没有对象从年轻代晋升到老年代。
  • Compacted (压缩内存):
    • 值:
      • 重定位结束:23M (0%)
    • 解释:在重定位过程中,压缩了23MB的内存。
  • 年轻代内存变化:
    • 值:4130M (40%) -> 598M (6%)
    • 解释:年轻代内存从GC前的4130MB(占40%)减少到GC后的598MB(占6%),垃圾收集过程持续了0.169秒。
[info][gc,phases   ] GC(13451) O: Old Generation
[info][gc,phases   ] GC(13451) O: Concurrent Mark 516.540ms
[info][gc,phases   ] GC(13451) O: Pause Mark End 0.021ms
[info][gc,phases   ] GC(13451) O: Concurrent Mark Free 0.001ms
[info][gc,phases   ] GC(13451) O: Concurrent Process Non-Strong 24.929ms
[info][gc,phases   ] GC(13451) O: Concurrent Reset Relocation Set 0.002ms
[info][gc,phases   ] GC(13451) O: Concurrent Select Relocation Set 2.376ms
[info][gc,task     ] GC(13451) O: Using 1 Workers for Old Generation
[info][gc,task     ] GC(13451) O: Using 1 Workers for Old Generation
[info][gc,phases   ] GC(13451) O: Concurrent Remap Roots 29.523ms
[info][gc,phases   ] GC(13451) O: Pause Relocate Start 0.018ms
[info][gc,phases   ] GC(13451) O: Concurrent Relocate 3.222ms
Enter fullscreen mode Exit fullscreen mode

这段日志详细记录了GC过程中老年代内存的统计信息。

  • Concurrent Mark (并发标记):并发标记阶段是用来标记老年代中的存活对象,这个过程耗时516.540毫秒。
  • Pause Mark End (暂停标记结束):暂停标记结束阶段,用来确保所有存活对象都被正确标记,耗时0.021毫秒。
  • Concurrent Mark Free (并发标记清除):并发标记清除阶段,用来清除在并发标记期间标记为存活但已不再存活的对象,耗时0.001毫秒。
  • Concurrent Process Non-Strong (并发处理非强引用):并发处理非强引用阶段,用来处理软引用、弱引用、虚引用等,耗时24.929毫秒。
  • Concurrent Reset Relocation Set (并发重置重定位集合):并发重置重定位集合阶段,用来准备重定位集合,耗时0.002毫秒。
  • Concurrent Select Relocation Set (并发选择重定位集合):并发选择重定位集合阶段,用来选择哪些对象需要被重定位,耗时2.376毫秒。
  • Using 1 Workers for Old Generation (使用1个工作线程处理老年代):日志记录了在处理老年代时使用了1个工作线程。
  • Concurrent Remap Roots (并发重映射根):并发重映射根阶段,用来更新根引用指向新的位置,耗时29.523毫秒。
  • Pause Relocate Start (暂停重定位开始):暂停重定位开始阶段,用来准备重定位对象,耗时0.018毫秒。
  • Concurrent Relocate (并发重定位):并发重定位阶段,用来实际移动对象到新位置,耗时3.222毫秒。
[info][gc,ref      ] GC(13451) O:                       Encountered   Discovered     Enqueued
[info][gc,ref      ] GC(13451) O: Soft References:             3116          447            0
[info][gc,ref      ] GC(13451) O: Weak References:            16558         9265            0
[info][gc,ref      ] GC(13451) O: Final References:              87            0            0
[info][gc,ref      ] GC(13451) O: Phantom References:          2401         1944          704
Enter fullscreen mode Exit fullscreen mode

软引用 (Soft References)

  • 遇到 (Encountered): 3116
  • 发现 (Discovered): 447
  • 入队 (Enqueued): 0

软引用是一种较弱的引用类型,当内存不足时,垃圾回收器会回收这些对象。在这次垃圾回收过程中,总共遇到了3116个软引用对象,其中有447个被识别为软引用对象(即“发现”)。然而,没有任何一个软引用对象被加入到引用队列中(即Enqueued为0),这意味着在这次GC过程中,没有需要处理的软引用对象。

弱引用 (Weak References)

  • 遇到 (Encountered): 16558
  • 发现 (Discovered): 9265
  • 入队 (Enqueued): 0

弱引用是比软引用更弱的引用类型,垃圾回收器在每次GC时都会回收这些对象。在这次垃圾回收过程中,遇到了16558个弱引用对象,其中9265个被识别为弱引用对象。然而,同样没有任何一个弱引用对象被加入到引用队列中,这意味着这些弱引用对象在本次GC过程中没有进一步处理需求。

终结引用 (Final References)

  • 遇到 (Encountered): 87
  • 发现 (Discovered): 0
  • 入队 (Enqueued): 0

终结引用用于对象在垃圾回收之前需要执行一些清理工作。在这次垃圾回收过程中,总共遇到了87个终结引用对象,没有发现新的终结引用对象,并且没有任何终结引用对象被加入到引用队列中,这表明这些对象不需要立即处理。

虚引用 (Phantom References)

  • 遇到 (Encountered): 2401
  • 发现 (Discovered): 1944
  • 入队 (Enqueued): 704

虚引用是一种最弱的引用类型,主要用于跟踪对象何时被垃圾回收。在这次垃圾回收过程中,遇到了2401个虚引用对象,发现了1944个虚引用对象,并且有704个虚引用对象被加入到引用队列中,这意味着这些对象在本次GC过程中被处理。

Top comments (0)