[英]same jvm options, different gc output of tomcat and jetty
我使用相同的jvm選項在tomcat和jetty中運行webapp,但是我得到了完全不同的gc輸出。
jdk: jdk1.8.0_45
tomcat: tomcat-8.0.22
jetty: jetty-9.2
jvm選項:
-Xmx4G -Xms4G -XX:+UseG1GC -XX:MaxGCPauseMillis=400 -XX:SurvivorRatio=8
-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:/opt/logs/gc/timediff-gc-tomcat.log -XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=3M -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/logs/gc/timediff-tomcat-oom.hprof
我使用jstat -gc 8339 20s
來獲取gc輸出。
tomcat下gc的輸出:
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
0.0 19456.0 0.0 19456.0 1963008.0 454656.0 1163264.0 23188.0 41932.0 41027.3 4812.0 4617.4 12 0.419 0 0.000 0.419
0.0 19456.0 0.0 19456.0 1963008.0 523264.0 1163264.0 23188.0 41932.0 41027.3 4812.0 4617.4 12 0.419 0 0.000 0.419
0.0 19456.0 0.0 19456.0 1963008.0 586752.0 1163264.0 23188.0 41932.0 41027.3 4812.0 4617.4 12 0.419 0 0.000 0.419
0.0 19456.0 0.0 19456.0 1963008.0 651264.0 1163264.0 23188.0 41932.0 41027.3 4812.0 4617.4 12 0.419 0 0.000 0.419
0.0 19456.0 0.0 19456.0 1963008.0 715776.0 1163264.0 23188.0 41932.0 41027.3 4812.0 4617.4 12 0.419 0 0.000 0.419
0.0 19456.0 0.0 19456.0 1963008.0 780288.0 1163264.0 23188.0 41932.0 41027.3 4812.0 4617.4 12 0.419 0 0.000 0.419
0.0 19456.0 0.0 19456.0 1963008.0 843776.0 1163264.0 23188.0 41932.0 41027.3 4812.0 4617.4 12 0.419 0 0.000 0.419
0.0 19456.0 0.0 19456.0 1963008.0 908288.0 1163264.0 23188.0 41932.0 41027.3 4812.0 4617.4 12 0.419 0 0.000 0.419
碼頭下gc的輸出:
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
0.0 8192.0 0.0 8192.0 382976.0 108544.0 3803136.0 47412.0 46208.0 45242.9 5248.0 4927.3 6 0.290 0 0.000 0.290
0.0 8192.0 0.0 8192.0 382976.0 108544.0 3803136.0 47412.0 46208.0 45242.9 5248.0 4927.3 6 0.290 0 0.000 0.290
0.0 8192.0 0.0 8192.0 382976.0 108544.0 3803136.0 47412.0 46208.0 45242.9 5248.0 4927.3 6 0.290 0 0.000 0.290
0.0 8192.0 0.0 8192.0 382976.0 112640.0 3803136.0 47412.0 46208.0 45242.9 5248.0 4927.3 6 0.290 0 0.000 0.290
0.0 8192.0 0.0 8192.0 382976.0 112640.0 3803136.0 47412.0 46208.0 45242.9 5248.0 4927.3 6 0.290 0 0.000 0.290
0.0 8192.0 0.0 8192.0 382976.0 112640.0 3803136.0 47412.0 46208.0 45242.9 5248.0 4927.3 6 0.290 0 0.000 0.290
0.0 8192.0 0.0 8192.0 382976.0 112640.0 3803136.0 47412.0 46208.0 45242.9 5248.0 4927.3 6 0.290 0 0.000 0.290
據我了解,總heap
是4G; -XX:NewRatio
的默認值-XX:NewRatio
為2,因此新容量約為2.6G,舊容量約為1.4G; -XX:SurvivorRatio
的值-XX:SurvivorRatio
為8,因此伊甸園容量約為2G,幸存者容量約為260M; 所以我無法理解上面的gc日志。
有人可以幫忙嗎? 非常感謝!
據我所知, NewRatio
只設置了初始的新一代尺寸。 自適應大小調整策略將根據需要調整代數,以滿足各種GC目標。
我認為你不應該開始調整那些東西,除非你的任何更高級別的目標(吞吐量,暫停時間,足跡)都沒有達到。 如果可以,請將其留給GC的啟發式方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.