环境:WAS6.1.0.41,jdk5
1、CMS机制,要求足够的虚拟内存堆,HeapSize不大于2G,效果差。
2、Heap Size 最大不要超过可用物理内存的80%。-Xms可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 而-Xmn为1/4的-Xmx值
3、XX:NewRatio=N的配置会因为设置了-XX:+UseConcMarkSweepGC而失效,原因不明。所以,此时年轻代大小最好用-Xmn设置
4、-XX:CMSInitiatingOccupancyFraction值参考如下
设定: os=Xmx-Xmn-MaxPermSize
ns=Xmn-Xmn/(SurvivorRatio+2)
理论上要求:CMSInitiatingOccupancyFraction<(1-ns/os)*100%
实际上,还应该和操作系统cpu性能有关,因为cms有4个过程:第一次标记-并发标记-重新标记-并发收集,不是达到CMSInitiatingOccupancyFraction的值就能够马上gc的,需要时间,这段时间中,old区也会不断的填入对象,所以如果并发线程数设置足够大,cpu性能很好,可以接近<(1-ns/os)*100%,否则适当放宽
5、-XX:ParallelCMSThreads 设置后启动失败,原因不明。
6、ParallelGCThreads值,使得 (-XX:ParallelGCThreads+3)/4>2,CMS机制才有好的效果,这个和服务器cpu个数有关,ParallelGCThreads总值(一个操作系统上多个应用服务器)不能大于cpu数
7、可以通过查看GC日志,来定夺PermSize值,最好不让永久区满导致Full gc
本文针对WAS6.1.0.41环境下CMS垃圾回收机制的调优进行探讨,提供了HeapSize、-Xmn及-Xms等参数的设置建议,并对-Xmn与XX:NewRatio的关系、CMSInitiatingOccupancyFraction的设定原则进行了详细说明。
1822

被折叠的 条评论
为什么被折叠?



