最详细G1垃圾回收器日志解读
生活随笔
收集整理的這篇文章主要介紹了
最详细G1垃圾回收器日志解读
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先,開啟gc日志。-XX:+PrintGCDetails
疏散階段
疏散階段,主要是將內存中的數據從一些分區復制到其他分區
0.522: [GC pause (young), 0.15877971 secs] # 這次疏散只涉及年輕代,總耗時 0.15877971.如果是混合gc則可能是 [GC pause (mixed), 0.32714353 secs][Parallel Time: 157.1 ms] # 并行疏散,總耗時 157.1 ms[GC Worker Start (ms): 522.1 522.2 522.2 522.2 # 每個疏散線程的開始時間Avg: 522.2, Min: 522.1, Max: 522.2, Diff: 0.1] # 最大時間,最小時間[Ext Root Scanning (ms): 1.6 1.5 1.6 1.9 # 每個線程掃描根分區的時間Avg: 1.7, Min: 1.5, Max: 1.9, Diff: 0.4][Update RS (ms): 38.7 38.8 50.6 37.3 #更新RS的耗時,線程會把對當前分區引用的變更記錄在buffer里,這里就是處理這些bufferAvg: 41.3, Min: 37.3, Max: 50.6, Diff: 13.3][Processed Buffers : 2 2 3 2 # 處理緩沖區的數量Sum: 9, Avg: 2, Min: 2, Max: 3, Diff: 1][Scan RS (ms): 9.9 9.7 0.0 9.7 # 掃描RSAvg: 7.3, Min: 0.0, Max: 9.9, Diff: 9.9][Object Copy (ms): 106.7 106.8 104.6 107.9 # 每個線程復制到CS的內容其他分區Avg: 106.5, Min: 104.6, Max: 107.9, Diff: 3.3][Termination (ms): 0.0 0.0 0.0 0.0Avg: 0.0, Min: 0.0, Max: 0.0, Diff: 0.0][Termination Attempts : 1 4 4 6Sum: 15, Avg: 3, Min: 1, Max: 6, Diff: 5][GC Worker End (ms): 679.1 679.1 679.1 679.1 # 每個gc線程的結束時間Avg: 679.1, Min: 679.1, Max: 679.1, Diff: 0.1][GC Worker (ms): 156.9 157.0 156.9 156.9 # 每個gc worker的總耗時Avg: 156.9, Min: 156.9, Max: 157.0, Diff: 0.1][GC Worker Other (ms): 0.3 0.3 0.3 0.3 Avg: 0.3, Min: 0.3, Max: 0.3, Diff: 0.0][Clear CT: 0.1 ms] # 清理卡表[Other: 1.5 ms][Choose CSet: 0.0 ms][Ref Proc: 0.3 ms][Ref Enq: 0.0 ms][Free CSet: 0.3 ms][Eden: 12M(12M)->0B(10M) Survivors: 0B->2048K Heap: 13M(64M)->9739K(64M)] # 各個分代的內存變更。eden的容量從12M到10M,內存占用從12M到0.survivors的內存占用從0 到 2048k.堆內存容量從64M到64M,內存占用從13M到9739K[Times: user=0.59 sys=0.02, real=0.16 secs] # 總耗時0.16秒標記階段
1.416: [GC pause (young) (initial-mark), 0.62417980 secs] # 標記周期的第一階段是初始標記,標記從根直接可訪問的對象 2.042: [GC concurrent-root-region-scan-start] # 標志根分區,也就是初始標記的對象所在的區域。可以從初始標記的結果中直接獲得 2.067: [GC concurrent-root-region-scan-end, 0.0251507] # 根分區標記的結束及耗時。結束發送在下一次yong gc之前,因為下一次gc會改變初始標記的對象所在的分區 2.068: [GC concurrent-mark-start] # 并發標記,并發創建每個分區的卡表,標記外部分區對當前區域某個卡片的引用。 3.198: [GC concurrent-mark-reset-for-overflow] # 這表明全局標記堆棧已滿,并且堆棧溢出。并發標記檢測到此溢出,必須重置數據結構以再次開始標記。 4.053: [GC concurrent-mark-end, 1.9849672 sec] # 并發標記的結束,耗時 4.055: [GC remark 4.055: [GC ref-proc, 0.0000254 secs], 0.0030184 secs] # 重新標記。STW,在并發標記階段產生的變更會被寫屏障記錄下來。這里就是標記這部分對象,速度很快[Times: user=0.00 sys=0.00, real=0.00 secs] # 標記階段結束 4.088: [GC cleanup 117M->106M(138M), 0.0015198 secs][Times: user=0.00 sys=0.00, real=0.00 secs] # 回收資源階段,將空閑的分區收集好,非空閑的區域按回收代價排序。堆內存 138M, 回收前 117M,回收后106M. 4.090: [GC concurrent-cleanup-start] # 并發清理,主要根據停頓目標選擇適當數量的分區收集。 4.091: [GC concurrent-cleanup-end, 0.0002721] # 清理結束,耗時。總結
以上是生活随笔為你收集整理的最详细G1垃圾回收器日志解读的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《暖暖环游世界》:突破女性休闲游戏的商业
- 下一篇: 工学结合2019/9/17