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
主要信息:
- 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
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
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%)
这显示了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%
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)
这个记录了GC标记阶段的细节。stripe(s)表示标记阶段被分割成的条纹数量,proactive flush(es)和terminate flush(es)表示主动刷新和终止刷新次数,completion(s)和continuation(s)则记录了完成和继续标记的次数。
[info][gc,marking ] GC(13451) Y: Mark Stack Usage: 32M
这是标记阶段使用的堆栈大小,32M表示在标记过程中使用了32MB的堆栈空间。
[info][gc,nmethod ] GC(13451) Y: NMethods: 10884 registered, 686 unregistered
这是JIT编译的方法数量,表示注册了10884个方法,并且有686个方法被注销。这里的“unregistered”表示这些方法曾经被JIT编译并注册过,但现在已经被注销或从代码缓存中移除。这通常发生在方法不再需要时,或者当代码缓存需要回收空间以用于新的编译方法时。
[info][gc,metaspace] GC(13451) Y: Metaspace: 144M used, 145M committed, 400M reserved
记录了元空间的使用情况。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
这段日志记录了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
这段日志记录了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 表示没有大页面候选页面。
- Survivor 1:
[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%)
这段日志记录了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%)
这段日志记录了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
这段日志详细记录了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
这段日志详细记录了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
软引用 (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过程中被处理。