Java NewRatio参数不适用于CMS垃圾收集器
我将应用程序切换到CMS收集器,应用程序的吞吐量减少了一半。从GC日志中,我看到发生小型GC的频率很高(大约每秒10次)。我已经分配了Java NewRatio参数不适用于CMS垃圾收集器,java,garbage-collection,jvm,jvm-hotspot,jvm-arguments,Java,Garbage Collection,Jvm,Jvm Hotspot,Jvm Arguments,我将应用程序切换到CMS收集器,应用程序的吞吐量减少了一半。从GC日志中,我看到发生小型GC的频率很高(大约每秒10次)。我已经分配了4G的堆大小。JVM默认为young gen使用非常小的大小(小于40MB)。我想通过增加young gen的大小来尝试CMS。您能为我指出正确的JVM参数吗 我尝试了-XX:NewRatio,但JVM忽略了这个参数,年轻一代的大小没有变化 我的java版本是java版本“1.6.0_14” 如何设置-XX:NewRatio,以及在哪个JVM版本上设置 无论如何
4G
的堆大小。JVM默认为young gen使用非常小的大小(小于40MB
)。我想通过增加young gen的大小来尝试CMS。您能为我指出正确的JVM参数吗
- 我尝试了-XX:NewRatio,但JVM忽略了这个参数,年轻一代的大小没有变化
- 我的java版本是
java版本“1.6.0_14”
-XX:NewRatio
,以及在哪个JVM版本上设置
无论如何。如果您同时设置了一项功能,即-XX:MaxNewSize=size
,或者您同时设置了一项功能,即-XX:+UseConMarkSweepGC
,则可以忽略此选项。它适用于我:
默认值(Windows上的Java 7 64位):
java-Xmx4g-Xms4g-XX:+PrintGCDetails-XX:+useConMarkSweepGC-XX:+UseParNewGC-version
java版本“1.7.0_07”
Java(TM)SE运行时环境(build 1.7.0_07-b10)
Java HotSpot(TM)64位服务器虚拟机(构建23.3-b01,混合模式)
堆
PAR新一代总计613440K,使用21813K
伊甸园空间545344K,使用率4%
从空间68096K,已使用0%
到空间68096K,已使用0%
并发标记扫描生成总计3512768K,已使用0 k
并发标记扫描perm gen总计21248K,使用2084K
现在指定比率参数(大致相同的结果):
java-Xmx4g-Xms4g-XX:+PrintGCDetails-XX:NewRatio=6-XX:surviorratio=8-XX:+useConMarkSweepGC-XX:+UseParNewGC-version
PAR新一代总计539 264K,使用19174K
伊甸园空间479360K,使用率4%
从空间59904K开始,0%已使用
到空间59904K,已使用0%
并发标记扫描生成总计3595136K,已使用0K
并发标记扫描perm gen总计21248K,使用2084K
然后是完全不同的新/旧和伊甸园/幸存者比率:
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
java-Xmx4g-Xms4g-XX:+PrintGCDetails-XX:NewRatio=1-XX:surviorratio=1-XX:+useConMarkSweepGC-XX:+UseParNewGC-version
PAR新一代总计1398144K,使用
伊甸园空间699136K,使用率4%
从空间699008K,0%已使用
至空间699008K,已使用0%
并发标记扫描生成总计2097152K,已使用0K
并发标记扫描perm gen总计21248K,使用2084K
同样适用于Java 6或客户端VM(只是默认值不同)。您使用的是哪个版本的Java?你能试试Java 6 udpate 33吗?非常感谢。事实正是如此。我在
java版本“1.6.0_14”
上同时使用了-XX:+useConMarkSweepGC
和-XX:NewRatio
。我想我会升级我的JVM并尝试一下。
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
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