2016-07-24 95 views
2

一個星期切換到Java 1.7.0_80後,觀察到這種行爲G1收藏家沒有做完整的GC

S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 0 32M 0 32M 512M 128M 9.5G 7.7G 640M 475M 26487 157min 0 0min 157min

不完整的GC,大空間分配給老一代和太多的藏品在年輕一代發生。

通過JMX

調用完整的GC 後

S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 0 32M 0 32M 5.2G 768M 4.8G 2.7G 640M 475M 26592 158.4min 1 0.1min 158min

而且GC時間減少了很多。

參數是

-Xms10g 
-Xmx10g 
-XX:PermSize=640m 
-XX:MaxPermSize=640m 
-XX:SurvivorRatio=30 
-XX:MaxTenuringThreshold=15 
-XX:+UseG1GC 
-XX:MaxGCPauseMillis=100 
-XX:InitiatingHeapOccupancyPercent=80 
-XX:G1HeapRegionSize=32m 
-XX:ParallelGCThreads=16 

難道是因爲-XX的:MaxGCPauseMillis = 100?

很多舊對象中的對象都在ehcache中,TimeTimeIdle爲10分鐘,但ehcache不會清除對象,如果相同對象在過期後沒有被請求或者緩存未滿的話。

回答

4

-Xmx10g -XX:InitiatingHeapOccupancyPercent=80

我的高級算術技能告訴我,10GB的80%爲8GB。

OU 7.7G

這是小於8

因此沒有併發週期將開始。設置一個較低的IHOP或者不要明確設置,以便G1可以在運行時自動調整它。

+0

感謝您的解釋。我們誤解了它的含義。 –