2013-12-13 1 views
7

Я заметил, что каждая молодая коллекция мусора с java 7 занимает в среднем 10 миллисекунд, чем с java 6. Я использую 1.6.0_31 и 1.7.0_21. Конфигурация не изменилась, и не имеет аппаратных средств, JVM аргументы:Молодежная коллекция мусора более длинная пауза с java 7 vs java 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 

Я также посмотрел на каждого человека раз, а с java 6, каждый YGC занимает ~ 10 мс против java 7 составляет 20 мс. Что-то изменилось между версиями 6 и 7, которые могли бы объяснить это поведение?

EDIT: Я заметил, что java 7 работает в режиме 64 бит, тогда как java 6 использует 32-битную JVM, может ли это объяснить разницу?

Благодаря

+0

Я подозреваю, что размер eden и молодого поколения по умолчанию различен, и это может изменить такое поведение. Можете ли вы распечатать фактические размеры? –

+0

Различные алгоритмы или разные параметры. –

ответ

2

-XX:NewRatio По умолчанию для Java 6 является 8 но для Java 7 это 2. поэтому в java 6 размер молодого поколения меньше, чем java 7, следовательно, разница, которую я чувствую.

Поскольку время сбора мусора из города прямо пропорционально величине города. если размер города увеличивается, значит, время.

+0

Я устанавливаю размер нового поколения через -XX: MaxNewSize = 256 м -XX: NewSize = 256 м, поэтому я ожидаю, что он будет одинаковым для обеих версий – punx120