GC日志的生成
通過(guò)在應(yīng)用啟動(dòng)的時(shí)候吼过,配置jvm參數(shù)來(lái)實(shí)現(xiàn)GC日志的輸出
GC日志參數(shù)設(shè)置
可以參照這個(gè)設(shè)置在 catelina.sh中配置,例如我的TEST環(huán)境
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -XX:PermSize=256M -XX:MaxPermSize=1024M
-XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=2
-verbose:gc
-Xloggc:/usr/developer/huangForBackUp/testgc.log
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-XX:+PrintHeapAtGC
-XX:MaxTenuringThreshold=15
"
-verbose:gc 輸出日志
-Xloggc:../logs/gc.log 日志文件的輸出路徑
-XX:+PrintGC 輸出GC日志
-XX:+PrintGCDetails 輸出GC的詳細(xì)日志
-XX:+PrintGCTimeStamps 輸出GC的時(shí)間戳(以基準(zhǔn)時(shí)間的形式 基準(zhǔn)時(shí)間是tomcat的啟動(dòng)時(shí)間:609587.773: [GC609587.773: [ParNew: 286262K->12045K(306688K))
-XX:+PrintGCDateStamps 輸出GC的時(shí)間戳(以日期的形式坛掠,2019-01-30T16:25:25.454+0800: 203.999: [GC2019-01-30T16:25:25.45)
-XX:+PrintHeapAtGC 在進(jìn)行GC的前后打印出堆的信息赊锚,注意是前后都會(huì)打印
Heap after GC invocations=42 (full 0):
par new generation total 306688K, used 34048K [0x00000006c7200000, 0x00000006dbec0000, 0x00000006dbec0000)
eden space 272640K, 0% used [0x00000006c7200000, 0x00000006c7200000, 0x00000006d7c40000)
from space 34048K, 100% used [0x00000006d7c40000, 0x00000006d9d80000, 0x00000006d9d80000)
to space 34048K, 0% used [0x00000006d9d80000, 0x00000006d9d80000, 0x00000006dbec0000)
concurrent mark-sweep generation total 1756416K, used 571751K [0x00000006dbec0000, 0x0000000747200000, 0x00000007c0000000)
concurrent-mark-sweep perm gen total 262144K, used 111041K [0x00000007c0000000, 0x00000007d0000000, 0x0000000800000000)
}
{Heap before GC invocations=42 (full 0):
par new generation total 306688K, used 306688K [0x00000006c7200000, 0x00000006dbec0000, 0x00000006dbec0000)
eden space 272640K, 100% used [0x00000006c7200000, 0x00000006d7c40000, 0x00000006d7c40000)
from space 34048K, 100% used [0x00000006d7c40000, 0x00000006d9d80000, 0x00000006d9d80000)
to space 34048K, 0% used [0x00000006d9d80000, 0x00000006d9d80000, 0x00000006dbec0000)
concurrent mark-sweep generation total 1756416K, used 571751K [0x00000006dbec0000, 0x0000000747200000, 0x00000007c0000000)
concurrent-mark-sweep perm gen total 262144K, used 115737K [0x00000007c0000000, 0x00000007d0000000, 0x0000000800000000)
類(lèi)型概述
- [DefNew 表示用的Serial 年輕代回收器
- [ParNew 表示年輕代用的 Parnew
- [PSYoungGen: 表示年輕代用的是 Parallel Scanvenge
解讀YGC的一條日志
- 下面是[ParNew] 表示年輕代回收器治筒,也就是YGC
- 年輕代從306688K(eden+S0)經(jīng)過(guò)YGC后變成了26672K,年輕代的總?cè)萘窟€是306688K舷蒲,YGC累計(jì)系統(tǒng)耗時(shí) 0.0505390 secs,整個(gè)堆區(qū)從YGC前的878439K變成了壓縮后的614977K耸袜,整個(gè)堆區(qū)的容量為2063104K(實(shí)際上忽略了一個(gè)S0區(qū)的大小)
- S0區(qū)大小34048K牲平, S0 +2063104K=2097152 K= 2G
[GC2019-01-30T16:25:25.454+0800: 203.999: [ParNew: 306688K->26672K(306688K), 0.0505390 secs] 878439K->614977K(2063104K), 0.0507020 secs][Times: user=0.16 sys=0.00, real=0.05 secs]