Ho notato che ogni nuova garbage collection con java 7 richiede in media 10 millisecondi in più rispetto a java 6. Sto usando 1.6.0_31
e 1.7.0_21
. La configurazione non è cambiata, né ha l'hardware, argomenti JVM sono:La garbage collection dei giovani si interrompe più a lungo con 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
Ho anche guardato a ciascun individuo volte, e con java 6, ogni YGC
richiede ~ 10ms contro java 7 è 20ms. Qualcosa è cambiato tra la versione 6 e 7 che potrebbe spiegare questo comportamento?
EDIT: Ho notato che java 7 viene eseguito in modalità a 64 bit, mentre java 6 utilizza una JVM a 32 bit, potrebbe spiegare la differenza?
Grazie
Sospetto che la dimensione dell'eden e della generazione giovane sia diversa per impostazione predefinita e questo può modificare questo tipo di comportamento. Puoi stampare le dimensioni reali? –
Algoritmo diverso o parametri diversi. –