NewRatio parameter not working with CMS garbage collector

前端 未结 2 1177
刺人心
刺人心 2020-12-21 10:08

I switched to CMS collector for my application and throughput of application decreased by half. From GC logs, I see a high frequency of minor GCs happening (aroung 10

相关标签:
2条回答
  • 2020-12-21 10:20

    How did you set -XX:NewRatio, and on which JVM version?

    Anyway. It could be ignored if you are also setting -XX:MaxNewSize=size, which is a feature, or if you are also setting -XX:+UseConcMarkSweepGC which is a known bug.

    0 讨论(0)
  • 2020-12-21 10:31

    It works for me:

    The defaults (Java 7 64bit on Windows):

    java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version
    java version "1.7.0_07"
    Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
    Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
    Heap
     par new generation   total 613440K, used 21813K
      eden space 545344K,   4% used
      from space 68096K,   0% used
      to   space 68096K,   0% used
     concurrent mark-sweep generation total 3512768K, used 0K
     concurrent-mark-sweep perm gen total 21248K, used 2084K
    

    Now specifying the ratio parameters (roughly same result):

    java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:NewRatio=6 -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version
     par new generation   total 539264K, used 19174K
      eden space 479360K,   4% used
      from space 59904K,   0% used
      to   space 59904K,   0% used
     concurrent mark-sweep generation total 3595136K, used 0K
     concurrent-mark-sweep perm gen total 21248K, used 2084K
    

    And then a totally different new/old and eden/survivor ratio:

    java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version
     par new generation   total 1398144K, used 27965K
      eden space 699136K,   4% used
      from space 699008K,   0% used
      to   space 699008K,   0% used
     concurrent mark-sweep generation total 2097152K, used 0K
     concurrent-mark-sweep perm gen total 21248K, used 2084K
    

    Same works for Java 6 or client VM (just with different defaults).

    0 讨论(0)
提交回复
热议问题