熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

專家指導 如何進行JVM參數配置

2013-11-23 19:31:50  來源: Java核心技術 
    本文將教大家如何進行JVM參數配置JVM提供了大量命令行參數大家可以將本文打印下來作為資料備查最後還將為大家講解如何進行調優相信你一定會感興趣的
   
    高手教大家如何進行JVM參數配置
   
    堆大小設置
   
    JVM中最大堆大小有三方面限制相關操作系統的數據模型(bt還是bit)限制系統的可用虛擬內存限制系統的可用物理內存限制位系統下一般限制在G~G;為操作系統對內存無限制我在WindowsServer系統G物理內存JDK下測試最大可設置為m
   
    典型JVM參數配置
   
    javaXmxmXmsmXmngXssk
   
    Xmxm:設置JVM最大可用內存為M
   
    Xmsm:設置JVM促使內存為m此值可以設置與Xmx相同以避免每次垃圾回收完成後JVM重新分配內存
   
    Xmng:設置年輕代大小為G整個堆大小=年輕代大小+年老代大小+持久代大小持久代一般固定大小為m所以增大年輕代後將會減小年老代大小此值對系統性能影響較大Sun官方推薦配置為整個堆的/
   
    Xssk:設置每個線程的堆棧大小JDK以後每個線程堆棧大小為M以前每個線程堆棧大小為K更具應用的線程所需內存大小進行調整在相同物理內存下減小這個值能生成更多的線程但是操作系統對一個進程內的線程數還是有限制的不能無限生成經驗值在~左右
   
    javaXmxmXmsmXssk
   
    XX:NewRatio=XX:SurvivorRatio=
   
    XX:MaxPermSize=mXX:MaxTenuringThreshold=
   
    XX:NewRatio=:設置年輕代(包括Eden和兩個Survivor區)與年老代的比值(除去持久代)設置為則年輕代與年老代所占比值為:年輕代占整個堆棧的/
   
    XX:SurvivorRatio=:設置年輕代中Eden區與Survivor區的大小比值設置為則兩個Survivor區與一個Eden區的比值為:一個Survivor區占整個年輕代的/
   
    XX:MaxPermSize=m:設置持久代大小為m
   
    XX:MaxTenuringThreshold=:設置垃圾最大年齡如果設置為的話則年輕代對象不經過Survivor區直接進入年老代對於年老代比較多的應用可以提高效率如果將此值設置為一個較大值則年輕代對象會在Survivor區進行多次復制這樣可以增加對象再年輕代的存活時間增加在年輕代即被回收的概論
   
    回收器選擇
   
    JVM給了三種選擇串行收集器並行收集器並發收集器但是串行收集器只適用於小數據量的情況所以這裡的選擇主要針對並行收集器和並發收集器默認情況下JDK以前都是使用串行收集器如果想使用其他收集器需要在啟動時加入相應參數JDK以後JVM會根據當前系統配置進行判斷
   
    吞吐量優先的並行收集器
   
    如上文所述並行收集器主要以到達一定的吞吐量為目標適用於科學技術和後台處理等
   
    典型JVM參數配置
   
    javaXmxmXmsmXmngXssk
   
    XX:+UseParallelGCXX:ParallelGCThreads=
   
    XX:+UseParallelGC:選擇垃圾收集器為並行收集器此配置僅對年輕代有效即上述配置下年輕代使用並發收集而年老代仍舊使用串行收集
   
    XX:ParallelGCThreads=:配置並行收集器的線程數同時多少個線程一起進行垃圾回收此值最好配置與處理器數目相等
   
    javaXmxmXmsmXmngXsskXX:+UseParallelGCXX:ParallelGCThreads=XX:+UseParallelOldGC
   
    XX:+UseParallelOldGC:配置年老代垃圾收集方式為並行收集JDK支持對年老代並行收集
   
    javaXmxmXmsmXmngXsskXX:+UseParallelGCXX:MaxGCPauseMillis=
   
    XX:MaxGCPauseMillis=:設置每次年輕代垃圾回收的最長時間如果無法滿足此時間JVM會自動調整年輕代大小以滿足此值
   
    javaXmxmXmsmXmngXsskXX:+UseParallelGCXX:MaxGCPauseMillis=XX:+UseAdaptiveSizePolicy
   
    XX:+UseAdaptiveSizePolicy:設置此選項後並行收集器會自動選擇年輕代區大小和相應的Survivor區比例以達到目標系統規定的最低相應時間或者收集頻率等此值建議使用並行收集器時一直打開
   
    響應時間優先的並發收集器
   
    如上文所述並發收集器主要是保證系統的響應時間減少垃圾收集時的停頓時間適用於應用服務器電信領域等
   
    典型JVM參數配置
   
    javaXmxmXmsmXmngXssk
   
    XX:ParallelGCThreads=
   
    XX:+UseConcMarkSweepGCXX:+UseParNewGC
   
    XX:+UseConcMarkSweepGC:設置年老代為並發收集測試中配置這個以後XX:NewRatio=的配置失效了原因不明所以此時年輕代大小最好用Xmn設置
   
    XX:+UseParNewGC:設置年輕代為並行收集可與CMS收集同時使用JDK以上JVM會根據系統配置自行設置所以無需再設置此值
   
    javaXmxmXmsmXmngXsskXX:+UseConcMarkSweepGCXX:CMSFullGCsBeforeCompaction=XX:+UseCMSCompactAtFullCollection
   
    XX:CMSFullGCsBeforeCompaction:由於並發收集器不對內存空間進行壓縮整理所以運行一段時間以後會產生碎片使得運行效率降低此值設置運行多少次GC以後對內存空間進行壓縮整理
   
    XX:+UseCMSCompactAtFullCollection:打開對年老代的壓縮可能會影響性能但是可以消除碎片
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27039.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.