GC详细日志简要分析:
2023-01-17T14:16:23.810+0800: 10233.942: [GC (Allocation Failure)
2023-01-17T14:16:23.810+0800: 10233.942: [DefNew: 70396K->439K(78720K), 0.0012171 secs] 144598K->74642K(253504K), 0.0013205 secs]
[Times: user=0.00 sys=0.00, real=0.00 secs]
2023-01-17T14:16:23.810:GC事件开始的时间点
+0800:代表正8时区
10233.942:GC事件相对于JVM启动时间的间隔,单位是秒
GC (Allocation Failure):用来区分Minor GC还是Full GC的标志。GC表明这是一次小型GC(Minor GC)即年轻代GC
Allocation Failure:表示触发GC的原因。本次GC事件,是由于对象分配失败,年轻代中没有空间来存放新生成的对象引起的
DefNew:是Serial收集器的标识。它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束
70396K->439K(78720K):GC前年轻代使用了70396K内存,GC后年轻代使用了439K内存,78720K表示年轻代总的内存大小
0.0012171 secs:本次GC耗时,单位s
144598K->74642K(253504K):GC前堆内存的使用量144598K,GC后堆内存使用74642K,堆总内存为253504K。
0.0013205 secs:本次GC耗时,单位s
user:所有 GC线程消耗的CPU时间
sys:系统调用和系统等待事件消耗的时间
real:则表示应用程序暂停的时间
可推出:
GC前后年轻代内存使用率为:89.42% -> 0.55% 使用量减少 70396-439=69957K
GC前后堆内存使用率为:57% -> 29.4% 使用量减少 144598-74642 = 69956K GC一次后由年轻代转换为老年代为69957-69956 = 1k
GC前老年代使用量:144598 - 70396 = 74202K
GC后老年代使用量:74642 - 439 = 74203K
应用程序由于GC而产生的停顿时间说明:
2023-01-17T16:58:30.641+0800: 704.791: Total time for which application threads were stopped: 0.0002828 seconds, Stopping threads took: 0.0000628 seconds
停止应用程序线程的总时间: 0.0002828秒,停止线程的时间: 0.0000628秒