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秒
参数 | 说明 |
-XX:+PrintGC | 简单打印GC日志 |
-XX:+PrintGCDetails | 详细打印GC日志 |
-XX:+PrintHeapAtGC | 打印全面的Java堆信息 |
-XX:+PrintGCTimeStamps | GC发生时,额外输出GC发生的时间,该输出时间为虚拟机启动后的时间偏移量 |
-XX:+PrintGCDateStamps | GC发生时,带时区的日期打印 |
-XX:+PrintGCApplicationConcurrentTime | 打印应用程序的执行时间 |
-XX:+PrintGCApplicationStoppedTime | 打印应用程序由于GC而产生的停顿时间 |
-XX:+PrintReferenceGC | 跟踪系统内的软引用,弱引用,虚引用和Finallize队列 |
-Xloggc:log/gc.log | 指定gc日志输出的文件路径。JDK8开始支持使用%p,%t等占位符来指定GC输出文件。分别表示进程pid和启动时间戳。例如: ./Log/gc-%p.log ./Log/gc-%t.log |
-XX:+HeapDumpOnOutOfMemoryError | 内存溢出时导出整个堆信息 |
-XX:HeapDumpPath | 指定导出堆的存放路径 |
-Xms: | 初始堆大小 |
-Xmx: | 最大堆大小 |
-XX:NewSize=n | 设置年轻代大小 |
-XX:NewRatio=n | 设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 |
-XX:SurvivorRatio=n | 年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5 |
-XX:MaxPermSize=n | 设置持久代大小 |
-XX:+UseSerialGC | 设置串行收集器 |
-XX:+UseParallelGC | 设置并行收集器 |
-XX:+UseParalledlOldGC | 设置并行年老代收集器 |
-XX:+UseConcMarkSweepGC | 设置并发收集器 |
标签:java,年轻,收集器,虚拟机,XX,GC,内存,日志 From: https://www.cnblogs.com/ding08/p/17058383.html