JVM常用GC日志打印參數(shù)
1. PrintGC
最簡單的GC參數(shù)。
啟用配置:-XX:+PrintGC
日志如下:
根據(jù)上面紅色方框內(nèi)的數(shù)字1、2、3、4、5說明,1是GC類型,GC:minor GC(young gc),Full GC:major GC,2是GC前堆內(nèi)存使用量,3是GC后堆內(nèi)存使用量,4是堆內(nèi)存總量,5是本次GC耗時
2. PrintGCDetails
打印GC的詳細(xì)信息
啟用配置:-XX:+PrintGCDetails
日志如下:
不同的垃圾回收器,GC日志(表示年代的詞)可能會不一樣, 和第一節(jié)中差不多,->前的是GC前堆內(nèi)存使用量,->后面是GC后堆內(nèi)存使用量,括號內(nèi)是堆內(nèi)存總量。
對于這個日志,PSYoungGen:年輕代,ParOldGen:老年代,PSPermGen:持久代(方法區(qū))
Times: user表示用戶態(tài)CPU耗時,sys表示系統(tǒng)CPU耗時,real表示GC實際耗時
3. PrintGCTimeStamps
GC時,打印進(jìn)程啟動到現(xiàn)在經(jīng)歷的時間
啟用配置:-XX:+PrintGCTimeStamps
日志如下:
紅色方框內(nèi)的時間,表示進(jìn)程啟動到現(xiàn)在經(jīng)歷的時間
該參數(shù)需要配合其它GC日志打印參數(shù)一起使用,如下
4. PrintGCApplicationStoppedTime
打印GC時,應(yīng)用停頓時間
啟用配置:-XX:+PrintGCApplicationStoppedTime
日志如下:
5. PrintGCApplicationConcurrentTime
GC時打印應(yīng)用執(zhí)行時間
啟用配置:-XX:+PrintGCApplicationConcurrentTime
日志如下:
6. PrintHeapAtGC
每次GC前后打印堆信息
啟用配置:-XX:+PrintHeapAtGC
日志如下:
p.s. 上面幾個參數(shù)可同時配合使用,同時使用PrintGC和PrintGCDetails時,打印的詳細(xì)信息。
GC日志信息默認(rèn)是打印到控制臺,如果需要輸出到文件,可以使用參數(shù):-Xloggc:gc.log,gc.log是要輸出的日志文件,路徑為應(yīng)用啟動路徑的相對路徑下,也可以使用絕對路徑。
JVM打印GC日志到文件
package gc; public class GcTest { private static final int _1MB= 1024 * 1024; public static void main(String[] args) { byte[] a1, a2, a3, a4; a1 = new byte[2 * _1MB]; a2 = new byte[2 * _1MB]; a3 = new byte[2 * _1MB]; a4 = new byte[2 * _1MB]; } }
打印GC日志
D:studyworkspacejvmsrc>java -Xms20M -Xmx20M -Xmn10M -XX:Survivor
Ratio=8 -XX:+PrintGCDetails -Xloggc:d:gc.log gc.GcTest
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/x763795151/article/details/89981686