Java GC日志图解
1. GC日志开启
Java 的GC日志可以通过命令 -XX:+PrintGCDetails
开启。下面就来看看如何看懂GC的日志。
2. 如何看GC日志
下面是以JDK8为例子,GC也是用的默认(ParallelGC)的没有做任何修改。GC分为两种:
-
Minor GC — 新生代GC
-
GC (System.gc()) : GC的类型 GC表示的是 Minor GC
-
[PSYoungGen: 7887K->1228K(76288K)]
PSYoungGen: 表示年轻带
7887K: GC前新生代占用的内存
1228K:GC后新生代占用的内存
76288K:新生代总共大小 -
7887K->1236K(251392K)
7887K:GC前JVM堆内存占 用
1236K:GC后JVM堆内存占用
251392K: JVM堆总大小 -
0.0019310 secs GC耗时
-
[Times: user=0.01 sys=0.00, real=0.01 secs]
user=0.01 用户耗时
sys=0.00 系统耗时
real=0.01 实际耗时
-
-
Full GC(Major GC) — 老年代GC
- Full GC (System.gc()) GC类型—Full GC
- [PSYoungGen: 1228K->0K(76288K)]: 新生代:GC前内存占用—>GC后内存占用(新生代内存占用总量)
- [ParOldGen: 8K->1081K(175104K)]: 老年代:GC前内存占用—>GC后内存占用(老年代的内存占用总量)
- 1236K->1081K(251392K): JVM内存占用: GC前内存占用—>GC后内存占用(JVM内存占用总量)
- [Metaspace: 3212K->3212K(1056768K)]: 元数据区: GC前内存在用—>GC后内存占用(元数据区总量)
- 后面的都是时间