2011-03-17 104 views
1

什麼是GC日誌以下(粗體)的含義:GC日誌問題

81296.997:GC 7431462K-> 6692307K(8283776K), 1.0975224秒]
82337.956:GC 7531219K - > 6800788K(8283776K) 1.1563326秒]
83338.712:[GC 7639700K-> 6898225K(8283776K) 1.0868988秒]
83339.816:[GC 6899724K(8283776K),0.1227785秒]
83351.437:[GC 6911811K(8283776K),0.4253903秒]
84363.941:[GC 1859011K-> 1125589K(8283776K) 0.9137798秒]
85319.780:[GC 1964501K-> 1217720K(8283776K) 0.8500309秒]

我希望在日誌中全部 95%左右,我的XMX後進行,但上面我所看到的是。我的設置低於:

-d64 
-Xss384k 
-Xms8192m 
-Xmx8192m 
-XX:ParallelGCThreads=12 
-XX:PermSize=512m 
-XX:MaxPermSize=512m 
-XX:NewSize=1024m 
-XX:MaxNewSize=1024m 
-XX:SurvivorRatio=8 
-Xnoclassgc 
-XX:+DisableExplicitGC 
-verbose:gc 
-XX:+UseParNewGC 
-XX:+CMSParallelRemarkEnabled 
-XX:+UseConcMarkSweepGC 

讓我改一下我的問題:我知道什麼是整條生產線的意思,但我的問題是,爲什麼大膽的線條是不同的,它是一個什麼樣的GC?我不認爲這是年輕一代GC,如果不是,那麼這是什麼樣的GC?

+0

你的jvm的版本是什麼? – 2011-03-17 20:45:36

+0

其中:Java版本「1.6.0_21」 Java(TM)SE運行時環境(版本1.6.0_21-b06) Java HotSpot™服務器VM(版本17.0-b16,混合模式) – 2011-03-17 20:55:59

回答

3

這看起來很奇怪。大膽的線條似乎屬於年輕一代的GC。這也從事實表明,沒有空間被釋放,從短暫的時間,他們採取了失敗的嘗試,這可能發生的原因是老一代沒有足夠的空間來佔有所有需要的對象。

我感到奇怪的是下一行,但:

84363.941:GC 1859011K - > 1125589K(8283776K),0.9137798秒]

這也就之間發生在提出了三點四分之一的內存空閒了嗎?這可能是由parralel GC記錄引起的異常,但有些東西並不正確。

您可以嘗試添加-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution以獲得更清晰的視圖。 (當然還有-Xloggc:<log file>選項。)

+0

感謝您的回覆。所以你說的是GC系列是一個不尋常的案例?在生產中,我們遇到了這個問題,其中所有實例都顯示相同的症狀並嚴重影響其性能。您可以分享有關我們擁有的GC設置的任何其他信息嗎? – 2011-03-18 19:25:07

+0

@raj_arni他們似乎沒關係,並行gc線程的數量似乎有點高,但我不知道你的服務器有多少個CPU。但是根據你的日誌,我可以說很少。如果您添加我在答案中列出的額外選項,我可能會幫助您。 – biziclop 2011-03-18 21:05:16

1

我不是很確定,但好像外括號內的數字是時間戳,'GC'後的數字是GC後的內存,括號內的數字是GC發生前的數字。其餘的很直觀。

+0

爲了完整,第一個線上的數字是GC相對於應用程序開始發生的時間戳 - 請參閱http://java.sun.com/developer/technicalArticles/Programming/GCPortal/ – mindas 2011-03-17 22:11:51

+0

讓我重新說明我的問題:我知道什麼整條線的含義,但我的問題是爲什麼大膽的線條是不同的,它是什麼樣的GC?我不認爲這是年輕一代GC,如果不是,那麼這是什麼樣的GC? – 2011-03-18 12:14:49