2010-09-17 78 views
2

Java版本: 1.6.0_20Java GC日誌行之間有什麼區別? (「總共歷時......」 VS「[GC」)

我看到在我的日誌下面,我試圖找出差異在第一行和後面的行之間。據我所知,它們都與GC有關,但是它們之間並沒有一對一的關係,正如我讀過的其他GC教程中通常所說的那樣。我知道如何解釋第一行,第二行也很明顯,但這兩個事件之間的區別是什麼?

30171.470: [GC 30171.470: [ParNew: 32704K->64K(32704K), 0.0055740 secs] 1575471K->1545444K(3145664K), 0.0056610 secs] [Times: user=0.04 sys=0.00, real=0.01 secs] 
Total time for which application threads were stopped: 0.0060020 seconds 
Total time for which application threads were stopped: 0.0003300 seconds 
Total time for which application threads were stopped: 0.0000740 seconds 
Total time for which application threads were stopped: 0.0002630 seconds 
Total time for which application threads were stopped: 0.0002640 seconds 
Total time for which application threads were stopped: 0.0000760 seconds 
... Snipped 35 similar lines ... 
Total time for which application threads were stopped: 0.0006710 seconds 
Total time for which application threads were stopped: 0.0000870 seconds 
Total time for which application threads were stopped: 0.0002710 seconds 
Total time for which application threads were stopped: 0.0000770 seconds 
Total time for which application threads were stopped: 0.0002810 seconds 
Total time for which application threads were stopped: 0.0002680 seconds 
Total time for which application threads were stopped: 0.0000770 seconds 
30289.137: [GC 30289.137: [ParNew: 32704K->63K(32704K), 0.0063990 secs] 1578084K->1548229K(3145664K), 0.0064890 secs] [Times: user=0.04 sys=0.00, real=0.01 secs] 

感謝您的幫助!

回答

2

「......應用程序線程」消息由PrintGCApplicationStoppedTime控制。只要JVM到達safepoint操作的結尾,它就會檢查是否應該打印該操作期間應用程序停止的時間。

國旗的名稱有些誤導性,因爲它與GC沒有特別的關係。例如,如果您也使用PrintSafepointStatistics標誌運行,則您可能會看到大多數VM操作是RevokeBias。與GC相關的操作將命名爲GenCollectForAllocation

+0

那麼這些只是兩種不同的小GC?我認爲安全點是GC可以安全發生的地方。這是一堆線程停止在一個安全點,然後GC不發生,所以他們打破他們的停止?抱歉的混淆。 – AnArcticPuffin 2010-09-17 21:22:37

+0

增加了一些額外的信息,可能會有所幫助... – kschneid 2010-09-20 14:38:41

+0

謝謝。這些額外的信息幫助了一大堆。 – AnArcticPuffin 2010-09-22 14:09:24