JVM笔记九-GC收集器日志信息学习
在上一篇文章中,我们通过代码运行结果,查看到JVM的堆内存逻辑上分区是三部分,物理上分区是2部分,以及是新生代分区三部分,占比分布是8/1/1。而且我们还通过代码和堆JVM参数配置,制造出了OOM异常。下面我们就来分析GC回收器的日志信息。先来看看,OOM后,GC详细日志信息:新生区的伊甸园区GC日志分析新生区的Eden区的GC,叫法:GC或者是YGC或者是MinorGC或者是轻GC我们复制一条来
新生代GC称为GC、YGC、MinorGC或轻GC,日志[GC (Allocation Failure) [PSYoungGen: 1877K->472K(2048K)] 3697K->2835K(7680K), 0.0010223 secs]依次表示GC类型、新生代回收前后占用与总容量、堆回收前后占用与总容量、GC耗时。老年代GC称为Full GC、FGC或重GC,日志还会包含ParOldGen与Metaspace元空间的回收数据。
- Allocation Failure表示因内存分配失败触发的YoungGC
- PSYoungGen是新生代,ParOldGen是老年代,Metaspace是元空间
- Times中user为用户态耗时,sys为系统耗时,real为实际耗时
- Full GC (Ergonomics)是JVM自适应策略触发的老年代收集
在上一篇文章中,我们通过代码运行结果,查看到JVM的堆内存逻辑上分区是三部分,物理上分区是2部分,以及是新生代分区三部分,占比分布是8/1/1。而且我们还通过代码和堆JVM参数配置,制造出了OOM异常。下面我们就来分析GC回收器的日志信息。
先来看看,OOM后,GC详细日志信息:


新生区的伊甸园区GC日志分析
新生区的Eden区的GC,叫法:GC或者是YGC或者是MinorGC或者是轻GC
我们复制一条来分析:
[GC (Allocation Failure①) [PSYoungGen: 1877K②->472K③(2048K④)] 3697⑤K->2835K⑥(7680K⑦), 0.0010223⑧ secs] [Times: user=
原创不易,完成人机校验,阅读全文
常见问题
GC日志里user、sys、real时间有什么区别
user是GC消耗的用户态CPU时间,sys是内核态系统时间,real是从开始到结束的实际墙钟时间。多线程GC时user可能大于real,三者结合可判断GC真实开销。