2013-12-13 25 views
7

Ben java 7 ile her genç çöp toplama java 6'dan ortalama 10 daha milisaniye olduğunu fark ettim. 6 1.6.0_31 ve 1.7.0_21 kullanıyorum. Yapılandırma değişti, ne donanıma sahiptir olmadı, JVM argümanlar şunlardır:Genç çöp toplama java 7 ve java 6 ile daha uzun duraklama 6

-server -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+TieredCompilation -XX:+AggressiveOpts -Xms1g -Xmx1g -XX:MaxNewSize=256m -XX:NewSize=256m 
  • Java 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. 
  • Java 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 

Ayrıca her bireye baktım kez ve java 6 ile, her YGC ~ 10ms vs java 7 20ms alır. Bu davranışı açıklayabilecek 6 ve 7 arası bir şey değişti mi?

EDIT: java 7'nin 64 bit modunda çalıştığını, java 6'nın 32 bit JVM kullandığını fark ettim, bu farkı açıklayabilir mi?

Teşekkür

+0

Eden'in büyüklüğünden şüpheleniyorum ve genç nesil varsayılan olarak farklı ve bu da bu tür davranışları değiştirebilir. Gerçek boyutları yazdırabilir misin? –

+0

Farklı algoritma veya farklı parametreler. –

cevap

2

Java 6 için varsayılan -XX:NewRatio8 ama Java 7 için 2 olduğunu. Böylece java 6'da genç neslin büyüklüğü java 7'den daha azdır. Çünkü, bir şehirden çöp toplama zamanı, şehrin büyüklüğü ile doğru orantılıdır. eğer şehir büyüklüğü bu yüzden zaman artarsa.

+0

Yeni neslin boyutunu -XX: MaxNewSize = 256m -XX: NewSize = 256m olarak ayarlıyorum, bu yüzden her iki sürüm için de aynı olmasını bekliyorum – punx120