2011-03-08 111 views
4

我不明白G1GC GC日誌的確切含義(添加PrintGCDetails和PrintGCTimeStamps時)。有人可以闡明語法嗎?G1GC GC日誌是什麼意思?

[

GC pause (young), 0.03067078 secs] 
    [SATB Drain Time: 0.2 ms] 
    [Parallel Time: 22.6 ms] 
     [GC Worker Start Time (ms): 165213430.0 165213430.0 165213430.0 165213430.0 165213430.0 165213430.0 165213430.1 165213430.1] 
     [Update RS (ms): 10.7 10.0 11.1 9.9 9.9 11.2 10.6 8.6 
     Avg: 10.3, Min: 8.6, Max: 11.2] 
     [Processed Buffers : 14 8 8 12 9 11 10 8 
      Sum: 80, Avg: 10, Min: 8, Max: 14] 
     [Ext Root Scanning (ms): 2.5 2.6 2.9 3.4 3.3 2.7 2.6 2.4 
     Avg: 2.8, Min: 2.4, Max: 3.4] 
     [Mark Stack Scanning (ms): 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.2 
     Avg: 0.3, Min: 0.0, Max: 2.2] 
     [Scan RS (ms): 4.0 4.1 3.1 3.7 3.9 3.2 3.8 3.9 
     Avg: 3.7, Min: 3.1, Max: 4.1] 
     [Object Copy (ms): 4.7 5.3 4.7 4.8 4.7 4.7 4.8 4.7 
     Avg: 4.8, Min: 4.7, Max: 5.3] 
     [Termination (ms): 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
     Avg: 0.0, Min: 0.0, Max: 0.0] 
     [Termination Attempts : 23 1 26 23 19 29 22 25 
      Sum: 168, Avg: 21, Min: 1, Max: 29] 
     [GC Worker End Time (ms): 165213452.3 165213452.3 165213452.3 165213452.3 165213452.3 165213452.3 165213452.3 165213452.3] 
     [Other: 0.7 ms] 
    [Clear CT: 0.6 ms] 
    [Other: 7.3 ms] 
     [Choose CSet: 0.0 ms] 
    [ 3329M->3245M(6000M)] 

又是什麼完整的GC是什麼意思?它是並行的暫停嗎?哪個GC算法被使用?爲什麼G1決定使用它?

5.941: [Full GC 7891K->4756K(6000M), 0.1939233 secs] 

回答

0

以下是從(相當有限的)材料我可以在G1 GC網上找到的字裏行間。 (有從2004年一紙付費牆,從2008年JavaWorld的幻燈片,並G1 GC page。如果任何人有其他鏈接,請添加它們。)

又是什麼完整的GC是什麼意思?

與其他HotSpot GCs一樣,堆分爲新的或Eden空間,Survivor空間以及Old或Tenured Object空間。但是,與其他HotSpot GC不同,G1使用多個區域來容納空間。

通常,G1集電極遞增運行在與應用程序的線程並行,跟蹤和「抽空」物體進入其他區域。但是,看起來收集器有時會遠遠落後於它必須停止一切,並使用所有可用的處理器來收集所有堆區域。我認爲這是一個完整的GC。

它是一個暫停它並行?

我認爲這是並行化,但也停止了世界。

其中GC算法使用?

目前尚不清楚。

爲什麼G1決定使用它?

參見上文。它太落後了,堆滿了垃圾。

+0

赦免?如果您有更多相關鏈接,請添加它們。 –

+0

謝謝斯蒂芬。 我所熟悉的那些鏈接。問題是,網上公開可用的信息似乎是不足夠的...... 這是否意味着沒有人使用或真正評估這個呢? – lifey

+0

我不能判斷。我確信有些人使用它,但有多少是不可能確定的。 *有* 6頁谷歌點擊「g1gc調優」,但我不希望他們中的任何人提供確切的信息......除非他們來自甲骨文。 –

2

的信息很少「這是一個暫停它並行?」 在Java說法, GC兩種類型(基於與增變即應用程序併發) - (1)停止的環球(2)併發

停止的環球GC被進一步子劃分爲 - 1a的)停止這世界如果GC線程數是一個1B)並行如果GC線程數多於一個

0

從Oracle g1gc blogtechnetwork article

又是什麼完整的GC是什麼意思?

對於G1GC,即超過一半的區域的大小被認爲是「了Humongous對象」的任何對象。這樣的對象是在老一代直接分爲「了Humongous區域的」。 These Humongous regions are a contiguous set of regions.

Dead Humongous objects are freed在標記週期的期間完整垃圾回收循環期間清除階段也結束。

中,爲了減少開銷複製,在humongous對象中不包括任何疏散暫停。 完整垃圾回收週期到位壓緊了Humongous對象。

一般全部GC是清理整個堆 - 青年和終身空間(老根)

在不同的音符,你不必擔心應用程序線程多少時間」是停止」不論GC型:年輕的GC或全部GC等

它是一個暫停它並行?

YounGC is parallelized but not FullGC

完整的GC:Currently G1 full gc is single threaded and very slow,,我們應該儘量避免全GCS儘可能(從oracle文章)

其中GC算法用來?

你的意思是年輕的GC/GC大/全GC?從日誌中可以看出,最後一行是Full GC,第一行是YounGC。

爲什麼G1決定使用它?

對第一個查詢作出響應的解釋。

關於G1GC微調,都來看一下Oracle article及相關SE question

相關問題