Tôi nhận thấy rằng mỗi bộ sưu tập rác thải trẻ với java 7 mất trung bình 10 mili giây so với java 6. Tôi đang sử dụng 1.6.0_31
và 1.7.0_21
. Cấu hình vẫn không thay đổi, không có phần cứng, lập luận JVM là:Bộ sưu tập rác thải còn bị tạm dừng với 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
Tôi cũng đã xem từng cá nhân lần, và với java 6, mỗi YGC
mất ~ 10ms so với java 7 là 20ms. Có điều gì đó thay đổi giữa phiên bản 6 và 7 có thể giải thích hành vi này không?
EDIT: Tôi nhận thấy java 7 chạy ở chế độ 64 bit, trong khi java 6 sử dụng JVM 32 bit, điều đó có thể giải thích sự khác biệt không?
Cảm ơn
Tôi nghi ngờ kích thước của thế hệ eden và thế hệ trẻ khác nhau theo mặc định và điều này có thể thay đổi loại hành vi này. Bạn có thể in các kích thước thực tế không? –
Thuật toán khác nhau hoặc các tham số khác nhau. –