您好,登錄后才能下訂單哦!
今天小編給大家分享一下gc日志實例分析的相關知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
-XX:+PrintGC 輸出簡要GC日志
-XX:+PrintGCDetails 輸出詳細GC日志
-Xloggc:gc.log 輸出GC日志到文件
-XX:+PrintGCTimeStamps 輸出GC的時間戳(以JVM啟動到當期的總時長的時間戳形式)
-XX:+PrintGCDateStamps 輸出GC的時間戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在進行GC的前后打印出堆的信息
-verbose:gc
-XX:+PrintReferenceGC 打印年輕代各個引用的數(shù)量以及時長
-XX:+PrintGC與-verbose:gc
[GC (Allocation Failure) 61805K->9849K(256000K), 0.0041139 secs]
1、GC 表示是一次YGC(Young GC)
2、Allocation Failure 表示是失敗的類型
3、68896K->5080K 表示年輕代從68896K降為5080K
4、256000K表示整個堆的大小
5、0.0041139 secs表示這次GC總計所用的時間
在JDK 8中,-verbose:gc是-XX:+PrintGC一個別稱,日志格式等價與:-XX:+PrintGC,。
不過在JDK 9中 -XX:+PrintGC被標記為deprecated。
-XX:+PrintGCDetails
[GC (Allocation Failure) [PSYoungGen: 53248K->2176K(59392K)] 58161K->7161K(256000K), 0.0039189 secs] [Times: user=0.02 sys=0.01, real=0.00 secs]
1、GC 表示是一次YGC(Young GC)
2、Allocation Failure 表示是失敗的類型
3、PSYoungGen 表示年輕代大小
4、53248K->2176K 表示年輕代占用從53248K降為2176K
5、59392K表示年輕帶的大小
6、58161K->7161K 表示整個堆占用從53248K降為2176K
7、256000K表示整個堆的大小
8、 0.0039189 secs 表示這次GC總計所用的時間
9、[Times: user=0.02 sys=0.01, real=0.00 secs] 分別表示,用戶態(tài)占用時長,內(nèi)核用時,真實用時。
時間保留兩位小數(shù),四舍五入。
-XX:+PrintGCTimeStamps
1.963: [GC (Allocation Failure) 61805K->9849K(256000K), 0.0041139 secs]
如果加上-XX:+PrintGCTimeStamps那么日志僅僅比1.1介紹的最前面多了一個時間戳: 1.963, 表示從JVM啟動到打印GC時刻用了1.963秒。
-XX:+PrintGCDateStamps
2019-03-05T16:56:15.108+0800: [GC (Allocation Failure) 61805K->9849K(256000K), 0.0041139 secs]
如果加上-XX:+PrintGCDateStamps那么日志僅僅比1.1介紹的最前面多了一個日期時間: 2019-03-05T16:56:15.108+0800, 表示打印GC的時刻的時間是2019-03-05T16:56:15.108+0800。+0800表示是東8區(qū)。
-XX:+PrintHeapAtGC
invocations 表示GC的次數(shù),每次GC增加一次,每次GC前后的invocations相等
1、Heap before GC invocations=1 表示是第1次GC調(diào)用之前的堆內(nèi)存狀況
2、{Heap before GC invocations=1 (full 0): 表示是第1次GC調(diào)用之后的堆內(nèi)存狀況
-XX:+PrintReferenceGC
此設置 -XX:+PrintReferenceGC可以打印出SoftReference,WeakReference,F(xiàn)inalReference,PhantomReference,JNI Weak Reference幾種引用的數(shù)量,以及清理所用的時長,該參數(shù)在進行YGC調(diào)優(yōu)時可以排上用場。
CMS GC日志詳細分析
[GC (CMS Initial Mark) [1 CMS-initial-mark: 19498K(32768K)] 36184K(62272K), 0.0018083 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
[CMS-concurrent-mark-start]
[CMS-concurrent-mark: 0.011/0.011 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]
[CMS-concurrent-preclean-start]
[CMS-concurrent-preclean: 0.001/0.001 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[CMS-concurrent-abortable-preclean-start]
CMS: abort preclean due to time [CMS-concurrent-abortable-preclean: 0.558/5.093 secs] [Times: user=0.57 sys=0.00, real=5.09 secs]
[GC (CMS Final Remark) [YG occupancy: 16817 K (29504 K)][Rescan (parallel) , 0.0021918 secs][weak refs processing, 0.0000245 secs][class unloading, 0.0044098 secs][scrub symbol table, 0.0029752 secs][scrub string table, 0.0006820 secs][1 CMS-remark: 19498K(32768K)] 36316K(62272K), 0.0104997 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
[CMS-concurrent-sweep-start]
[CMS-concurrent-sweep: 0.007/0.007 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
[CMS-concurrent-reset-start]
[CMS-concurrent-reset: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
33.125: [GC [DefNew: 4310K->872K(37888K),0.0025925 secs] 4310K->880K(123904K), 0.0009434 secs]
100.667: [Full GC [Tenured: 4310K->872K(37888K),0.0149142 secs] 4310K->880K(123904K), 0.0150007 secs] [Times: user=0.01 sys=0.00, real=0.02 secs]
1,前面的數(shù)字“33.125:” 和 “100.667:”代表了GC發(fā)生的時間,這個數(shù)字的含義是從java虛擬機啟動以來經(jīng)過的秒數(shù)。
2, GC日志開頭的“[GC”和“[Full GC” 說明了這次垃圾收集的停頓類型,而不是用來區(qū)分新生代GC和老年代GC的,如果有“Full”,說明這次GC是發(fā)生了Stop-The-World的,如果調(diào)用System.gc()方法所觸發(fā)的收集,那么在這里將顯示“[Full GC (System.gc()”。
3,“[DefNew:”、“[Tenured:”、“[Perm:” 表示GC發(fā)生的區(qū)域,這里顯示的區(qū)域名成與使用的GC收集器是密切相關的;如果使用Serial收集器中的新生代名為“Default New Generation”,所以顯示“[DefNew:”;如果使用ParNew收集器,新生代名稱會變?yōu)椤癧ParNew:”,意為“Parallel New Generation”;如果使用Parallel Scavenge收集器,那它配套的新生代稱為“PSYoungGen”。,
4, 后面的括號內(nèi)部的“4310K->872K(37888K)”含義是“GC前該內(nèi)存區(qū)域已使用容量–>GC后該內(nèi)存區(qū)域已使用容量(該內(nèi)存區(qū)域總?cè)萘浚?/p>
“0.0025925 secs” 表示該內(nèi)存區(qū)域GC所占用的時間,單位秒。
5,方括號之外的“4310K->880K(123904K)”表示“GC前java堆已使用容量”–>“GC后java堆的已使用容量(java堆總?cè)萘浚?/p>
“0.0009434 secs”表示該java堆中GC所占用的時間,單位秒。
以上就是“gc日志實例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。