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