在java程序運行時候,如果輸出GC過程的日誌,我們常用到以下的jvm參數。
-XX:+PrintGC 簡潔的輸出GC日誌
-XX:+PrintGCDetails 詳細的輸出GC日誌
我們可以在idea 加上jvm的參數。如圖
運行代碼
public static void main(String[] args){
{
byte[] b = new byte[1024 * 1024 * 5];
}
int a = 0;
System.gc();
System.out.println("gc over");
}
運行結果截圖:
[GC (System.gc()) [PSYoungGen: 11710K->1112K(76288K)] 11710K->1120K(251392K), 0.0019247 secs] [Times: user=0.06 sys=0.00, real=0.00 secs]
解釋:
GC 垃圾回收器
PSYoungGen 年輕代
11710K 年輕代垃圾回收前的大小
1112K 年輕代垃圾回收後的大小
(76288K) 年輕代的總大小
user Young GC用戶耗時
sys Young GC系統耗時
real Young GC實際耗時
[Full GC (System.gc()) [PSYoungGen: 1112K->0K(76288K)] [ParOldGen: 8K->963K(175104K)] 1120K->963K(251392K), [Metaspace: 3437K->3437K(1056768K)], 0.0054721 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
解釋:
Full GC 老年代GC,指發生在老年代的垃圾回收
PSYoungGen 年輕代
1112K 年輕代垃圾回收前的大小
0K 年輕代垃圾回收後的大小
(76288K) 年輕代的總大小
ParOldGen 老年代
8K 老年代垃圾回收前的大小
963K 老年代垃圾回收後的大小
(175104K) 老年代的總大小
1120K java堆垃圾回收前的大小
963K java堆垃圾回收後的大小
(251392K) java堆的總大小
user Young GC用戶耗時
sys Young GC系統耗時
real Young GC實際耗時