JVM生产环境参数实例及分析
生活随笔
收集整理的這篇文章主要介紹了
JVM生产环境参数实例及分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java application項目(非web項目)
改進前:
-Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=78-XX:ThreadStackSize=128-Xloggc:logs/gc.log-Dsun.rmi.dgc.server.gcInterval=3600000-Dsun.rmi.dgc.client.gcInterval=3600000-Dsun.rmi.server.exceptionTrace=true問題:
改進后:
-Xms128m-Xmx128m-Xmn24m-XX:PermSize=80m-XX:MaxPermSize=80m-Xss256k-XX:SurvivorRatio=1-XX:MaxTenuringThreshold=20-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=75-XX:+UseCMSCompactAtFullCollection-XX:+CMSParallelRemarkEnabled-XX:CMSFullGCsBeforeCompaction=2-XX:SoftRefLRUPolicyMSPerMB=0-XX:+PrintClassHistogram-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintHeapAtGC-Xloggc:logs/gc.log-Dsun.rmi.dgc.server.gcInterval=3600000-Dsun.rmi.dgc.client.gcInterval=3600000-Dsun.rmi.server.exceptionTrace=true修改點:
再次改進后
-Xms128m-Xmx128m-Xmn36m-XX:PermSize=80m-XX:MaxPermSize=80m-Xss256k-XX:SurvivorRatio=1-XX:MaxTenuringThreshold=20-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFraction=73-XX:+UseCMSCompactAtFullCollection-XX:+CMSParallelRemarkEnabled-XX:CMSFullGCsBeforeCompaction=2-XX:SoftRefLRUPolicyMSPerMB=0-XX:+PrintClassHistogram-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintHeapAtGC-Xloggc:logs/gc.log-Dsun.rmi.dgc.server.gcInterval=3600000-Dsun.rmi.dgc.client.gcInterval=3600000-Dsun.rmi.server.exceptionTrace=true修改點:
在上面的基礎上調整Xmn大小到36M,設置CMSInitiatingOccupancyFraction=73。
Dden區與Survivor區大小都增加到12M,通過CMSInitiatingOccupancyFraction計算公式,計算得出value為73是,可以避免promotion faild問題,同時滿足堆內存監控報警值在80%:內存大小128M80%=102.4M 102.4M-36M=66.4M(老生代達到此值報警) 老生代達到67.15M(92M0.73)將發生Full GC,所以在老生代大小達到66.4M時也就是WARN報警時將很有可能出現Full GC。
? 增大了Eden和Survivor區的值,會減小YGC的次數,但由于空間變大理論上也會相應的增加YGC的時間,不過由于新生代本身就很小(才36M)這點兒變化可以忽略掉。實際的監控值顯示YGC的時間在4-5ms之間。是可以接受范圍。
SurvivorRatio 這個值還得在仔細考慮下,有待優化中
總結
以上是生活随笔為你收集整理的JVM生产环境参数实例及分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM GC性能方面的考虑(吞吐量和ST
- 下一篇: 位图bitmap数据结构