环境: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