Java GC 日志输出分析

时间:2023-03-08 21:56:20
Java GC 日志输出分析

搜到的几篇讲GC日志的文章,学到了很多东西。但是有些错误或者不够精确的地方。

因此自己尝试着总结一下。

先写个程序,然后结合程序解释每句话的意思。

运行参数 -Xms200M -Xmx200M -Xmn100M -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
默认的配置:client端,垃圾收集器是Parallel GC;JDK1.8没有永久代;SurvivorRatio = 8;
import java.util.List;
public class MyMain {
public static void main(String args[]){
System.out.println("gcSystem");
MyRefObject a = new MyRefObject();
MyRefObject b = new MyRefObject();
a = null;
b = null;
System.gc();
System.out.println("program end");
}
}
class MyRefObject{
public Object ref = null;
private int buf[] = new int[2*1024*1024];
}
原始输出如下:
gcSystem
0.133: [GC (System.gc()) [PSYoungGen: 20992K->600K(89600K)] 20992K->608K(192000K), 0.0009786 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
0.134: [Full GC (System.gc()) [PSYoungGen: 600K->0K(89600K)] [ParOldGen: 8K->515K(102400K)] 608K->515K(192000K), [Metaspace: 2459K->2459K(1056768K)], 0.0057636 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
program end
Heap
 PSYoungGen      total 89600K, used 3840K [0x00000000f9c00000, 0x0000000100000000, 0x0000000100000000)
  eden space 76800K, 5% used [0x00000000f9c00000,0x00000000f9fc01f8,0x00000000fe700000)
  from space 12800K, 0% used [0x00000000fe700000,0x00000000fe700000,0x00000000ff380000)
  to   space 12800K, 0% used [0x00000000ff380000,0x00000000ff380000,0x0000000100000000)
 ParOldGen       total 102400K, used 515K [0x00000000f3800000, 0x00000000f9c00000, 0x00000000f9c00000)
  object space 102400K, 0% used [0x00000000f3800000,0x00000000f3880c10,0x00000000f9c00000)
 Metaspace       used 2468K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 272K, capacity 386K, committed 512K, reserved 1048576K

解析后的输出内容:红色{}内为我的解析
gcSystem
0.133{从jvm启动到当前的时间差}: [GC{本次GC是minor GC} (System.gc()){是由用户的函数调用触发} [PSYoungGen{GC收集器是parallel Scavenge}: 20992K{GC前新生代[eden+from]使用大小}->600K{执行后新生代[eden+from]使用大小}(89600K)}{新生代总共可用大小[eden+from的总大小=76800K+12800K],-Xmn100M表示新生代共100M,其中eden区80M,from和to各10M}] 20992K{GC前整个heap使用总大小}->608K{GC后heap使用总大小}(192000K{heap总可用大小[200M-to区的12800K]}), 0.0009786 secs{本次GC的时长}] [Times: user=0.00 sys=0.00, real=0.00 secs]
0.134: [Full GC (System.gc()) [PSYoungGen: 600K->0K{新生代使用被清零}(89600K{新生代可用内存大小,等于eden76800+from12800})] [ParOldGen{parallel old}: 8K{老年代}->515K(102400K)] 608K->515K(192000K), [Metaspace{JDK1.8由metaspace取代了perm space}: 2459K->2459K(1056768K)], 0.0057636 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
program end
Heap
 PSYoungGen      total 89600K{eden+from}, used 3840K{eden+from使用情况,但是from=0}[0x00000000f9c00000, 0x0000000100000000, 0x0000000100000000)
  eden space 76800K, 5% used{76800K*5% = used 3840K} [0x00000000f9c00000,0x00000000f9fc01f8,0x00000000fe700000)
  from space 12800K, 0% used [0x00000000fe700000,0x00000000fe700000,0x00000000ff380000)
  to   space 12800K, 0% used [0x00000000ff380000,0x00000000ff380000,0x0000000100000000)
 ParOldGen       total 102400K{-Xms200M -Xmx200M}, used 515K{515K为上面GC后老年代剩余的占用大小} [0x00000000f3800000, 0x00000000f9c00000, 0x00000000f9c00000)
  object space 102400K, 0% used [0x00000000f3800000,0x00000000f3880c10,0x00000000f9c00000)
 Metaspace       used 2468K, capacity 4486K, committed 4864K, reserved 1056768K{好大的reserved,没有永久代了,所以metaspace是剩余内存大小}
  class space    used 272K, capacity 386K, committed 512K, reserved 1048576K

下图是整个的堆的分布情况

aaarticlea/png;base64,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" alt="" />

下面是一些特殊的说明。在我参考网站上的几个文章中,这几个部分说明有错误。

aaarticlea/png;base64,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" alt="" />