jdk5,solaris5,調試CMS回收機制時的7點總結

 環境: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章