淘先锋技术网

首页 1 2 3 4 5 6 7

【目录】 【上一篇:JVM 运行时参数】

十三、分析 GC 日志

GC 日志分析


GC 分类:

针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)
参见:
5、Minor GC、Major GC、Full GC详解

💡 内存分配与垃圾回收的参数列表
-XX:+PrintGC:输出 GC 日志(或 -verbose:gc);
-XX:+PrintGCDetails:输出 GC 详细日志;
-XX:+PrintGCTimeStamps:输出 GC 的时间戳
-XX:+PrintGCDateStamps:输出 GC 的时间戳(以日期形式)
-XX:+PrintHeapAtGC:在进行 GC 的前后打印出堆的信息
-Xloggc:…/logs/gc.log:日志文件的输出路径

日志分析工具:GCViewer、GCEasy

建议用 GCEasy

日志分析:

-XX:+PrintGC:输出 GC 日志(或 -verbose:gc)


-verbose:gc -XX:+PrintGCDetails


在这里插入图片描述

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStmps


-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStmps

  • “[ GC” 和 “[ Full GC” 表示这次垃圾收集的停顿类型,如果有 Full GC 说明发生了 STW;
  • 使用 Serial 收集器在新生代的名字是 Default New Generation,因此显示的是 “[ DefNew ”
  • 使用 ParNew 收集器在新生代显示的是 “[ ParNew ”
  • 使用 Parallel Scavenge 收集器在新生代显示的是 “[ PSYoungGen”
  • 老年代的收集和新生代道理一样,名字也是收集器决定的;
  • 使用 G1 收集器的话,会显示 ”garbage - first heap”
  • Allocation Failure:表明本次引起 GC 的原因是因为在年轻代中没有足够的空间能够存储新的数据
  • [PSYoungGen:5986K → 696K(8704K)] 5986K → 704K(9216K):
    • 中括号内:GC 回收前年轻代大小 → 回收后大小 (年轻代总大小)
    • 括号外:GC 回收前年轻代和老年代大小 → 回收后大小(年轻代和老年代总大小)
  • user 代表用户态回收耗时,sys 内核态回收耗时,rea 实际耗时。由于多核的原因,实际总和可能会超过 real 时间
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
【目录】 【上一篇:JVM 运行时参数】