1、GC日志参数
-verbose:gc //输出gc日志信息,默认输出到标准输出
-XX:+PrintGC //输出GC日志。类似:-verbose:gc
-XX:+PrintGCDetails //在发生垃圾回收时打印内存回收相处的日志, 并在进程退出时输出当前内存各区域分配情况
-XX:+PrintGCTimeStamps //输出GC发生时的时间戳
-XX:+PrintGCDateStamps 输出GC发生时的时间戳(以日期的形式,例如:2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC// 每一次GC前和GC后,都打印堆信息
-Xloggc:<file> //表示把GC日志写入到一个文件中去,而不是打印到标准输出中
2、GC日志格式
[GC (Allocation Failure) [PSYoungGen: 18944K->2528K(18944K)] 30757K->30427K(62976K), 0.0036557 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[Full GC (Ergonomics) [PSYoungGen: 2528K->0K(18944K)] [ParOldGen: 27899K->30149K(44032K)] 30427K->30149K(62976K), [Metaspace: 3160K->3160K(1056768K)], 0.0042183 secs] [Times: user=0.01 sys=0.01, real=0.00 secs]
2.1 [GC(Allocation Failure)
发生了一次垃圾回收,这是一次Minior GC。它不区分新生代还是老年代GC,括号里的内容是gc发生的原因,这里的Allocation Failure的原因是新生代中没有足够区域能够存放需要分配的数据而失败
2.2、[PSYoungGen:76800K->8433K(89600K)
PSYoungGen:表示GC发生的区域,区域名称与使用的GC收集器是密切相关的
Serial收集器:Default New Generation 显示Defnew
ParNew收集器:ParNew
Parallel Scanvenge收集器:PSYoung
老年代和新生代同理,也是和收集器名称相关
76800K->8433K(89600K):GC前该内存区域已使用容量->GC后盖区域容量(该区域总容量)
如果是新生代,总容量则会显示整个新生代内存的9/10,即eden+from/to区
如果是老年代,总容量则是全身内存大小,无变化
76800K->8449K(294400K)
在显示完区域容量GC的情况之后,会接着显示整个堆内存区域的GC情况:GC前堆内存已使用容量->GC后堆内存容量(堆内存总容量),并且堆内存总容量 = 9/10 新生代 + 老年代,然后堆内存总容量肯定小于初始化的内存大小
[Times:user=0.02 sys=0.01,real=0.01 secs]
user:指CPU工作在用户态所花费的时间
sys:指CPU工作在内核态所花费的时间
real:指在此次事件中所花费的总时间
,0.0088371
整个GC所花费的时间,单位是秒
Full GC(Metadata GCThreshold):
括号中是gc发生的原因,原因:Metaspace区不够用了。
除此之外,还有另外两种情况会引起Full GC,如下:
1、Full GC(FErgonomics)
原因:JVM自适应调整导致的GC
2、Full GC(System)
原因:调用了System.gc()方法
[PSYoungGen: 100082K->0K(89600K)]
PSYoungGen:表示GC发生的区域,区域名称与使用的GC收集器是密切相关的
Serial收集器:Default New Generation 显示DefNew
ParNew收集器:ParNew
Parallel Scanvenge收集器:PSYoungGen
老年代和新生代同理,也是和收集器名称相关
ParOldGen:32K->9638K(204800K)
老年代区域没有发生GC,因此本次GC是metaspace引起的
[Meatspace:20158K->20156K(1067008K)],
metaspace GC 回收2K空间
3、GC日志分析工具
4、GC分类
4.1、FGC GC回收新生代和老年代,也有概述是整堆收集
4.2、YGC GC 回收新生代
4.3、触发GC
1>老年代空间不足
2>方法区空间不足
3>显示调佣System.gc()
4>Minior GC进入老年代的数据的平均大小 大于 老年代的可用内存()
5>大对象直接进入老年代。老年代空间不足