2013-12-13 64 views
7

我注意到每個使用java 7的年輕垃圾收集平均比Java 6平均多10毫秒。我使用的是1.6.0_311.7.0_21。配置沒有變化,但無論有硬件,JVM參數是:年輕的垃圾收集與java 7更長的停頓7 vs java 6

-server -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+TieredCompilation -XX:+AggressiveOpts -Xms1g -Xmx1g -XX:MaxNewSize=256m -XX:NewSize=256m 
  • 爪哇7:
 
S0C S1C S0U S1U  EC  EU  OC   OU  PC  PU YGC  YGCT FGC FGCT  GCT 
26176.0 26176.0 3531.6 0.0 209792.0 21648.8 786432.0 86777.6 49472.0 49350.1  82 1.830 0  0.000 1. 
  • 爪哇6
 
S0C S1C S0U S1U  EC  EU  OC   OU  PC  PU YGC  YGCT FGC FGCT  GCT 
26176.0 26176.0 0.0 1210.5 209792.0 95873.4 786432.0 65327.1 35968.0 35891.2  83 0.620 0  0.000 0.620 

我也看着每個人次,並與Java 6,每YGC需要〜10ms與Java 7是20ms。版本6和版本7之間有什麼變化可以解釋這種行爲?

編輯:我注意到,Java 7運行在64位模式,而Java 6使用32位JVM,可以解釋這種差異嗎?

感謝

+0

我懷疑伊甸園和年輕一代的規模是不同的默認情況下,這可以改變這種行爲。你能打印實際尺寸嗎? –

+0

不同的算法或不同的參數。 –

回答

2

的Java 6默認-XX:NewRatio8但對於Java 7的是2。所以在Java 6中,年輕一代的規模小於Java 7,因此我感受到的差異。

因爲收集城市垃圾的時間與城市的規模成正比。如果城市規模增加,那麼時間。

+0

我通過-XX設置新一代的大小:MaxNewSize = 256m -XX:NewSize = 256m,所以我預計它對於兩個版本都是相同的 – punx120