<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    JVM學習筆記(四)------內存調優

     首先需要注意的是在對JVM內存調優的時候不能只看操作系統級別Java進程所占用的內存,這個數值不能準確的反應堆內存的真實占用情況,因為GC過后這個值是不會變化的,因此內存調優的時候要更多地使用JDK提供的內存查看工具,比如JConsole和Java VisualVM。

      對JVM內存的系統級的調優主要的目的是減少GC的頻率和Full GC的次數,過多的GC和Full GC是會占用很多的系統資源(主要是CPU),影響系統的吞吐量。特別要關注Full GC,因為它會對整個堆進行整理,導致Full GC一般由于以下幾種情況:

      ● 舊生代空間不足
      調優時盡量讓對象在新生代GC時被回收、讓對象在新生代多存活一段時間和不要創建過大的對象及數組避免直接在舊生代創建對象

      ● Pemanet Generation空間不足
      增大Perm Gen空間,避免太多靜態對象

      ● 統計得到的GC后晉升到舊生代的平均大小大于舊生代剩余空間
      控制好新生代和舊生代的比例

      ● System.gc()被顯示調用
      垃圾回收不要手動觸發,盡量依靠JVM自身的機制

      調優手段主要是通過控制堆內存的各個部分的比例和GC策略來實現,下面來看看各部分比例不良設置會導致什么后果

      1)新生代設置過小

      一是新生代GC次數非常頻繁,增大系統消耗;二是導致大對象直接進入舊生代,占據了舊生代剩余空間,誘發Full GC

      2)新生代設置過大

      一是新生代設置過大會導致舊生代過小(堆總量一定),從而誘發Full GC;二是新生代GC耗時大幅度增加

      一般說來新生代占整個堆1/3比較合適

      3)Survivor設置過小

      導致對象從eden直接到達舊生代,降低了在新生代的存活時間

      4)Survivor設置過大

      導致eden過小,增加了GC頻率

      另外,通過-XX:MaxTenuringThreshold=n來控制新生代存活時間,盡量讓對象在新生代被回收

      由上一篇博文JVM學習筆記(三)------內存管理和垃圾回收可知新生代和舊生代都有多種GC策略和組合搭配,選擇這些策略對于我們這些開發人員是個難題,JVM提供兩種較為簡單的GC策略的設置方式

      1)吞吐量優先

      JVM以吞吐量為指標,自行選擇相應的GC策略及控制新生代與舊生代的大小比例,來達到吞吐量指標。這個值可由-XX:GCTimeRatio=n來設置

      2)暫停時間優先

      JVM以暫停時間為指標,自行選擇相應的GC策略及控制新生代與舊生代的大小比例,盡量保證每次GC造成的應用停止時間都在指定的數值范圍內完成。這個值可由-XX:MaxGCPauseRatio=n來設置

     最后匯總一下JVM常見配置

      堆設置

      -Xms:初始堆大小

      -Xmx:最大堆大小

      -XX:NewSize=n:設置年輕代大小

      -XX:NewRatio=n:設置年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個年輕代年老代和的1/4

      -XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區占整個年輕代的1/5

      -XX:MaxPermSize=n:設置持久代大小

      收集器設置

      -XX:+UseSerialGC:設置串行收集器

      -XX:+UseParallelGC:設置并行收集器

      -XX:+UseParalledlOldGC:設置并行年老代收集器

      -XX:+UseConcMarkSweepGC:設置并發收集器

      垃圾回收統計信息

      -XX:+PrintGC

      -XX:+PrintGCDetails

      -XX:+PrintGCTimeStamps

      -Xloggc:filename

      并行收集器設置

      -XX:ParallelGCThreads=n:設置并行收集器收集時使用的CPU數。并行收集線程數。

      -XX:MaxGCPauseMillis=n:設置并行收集最大暫停時間

      -XX:GCTimeRatio=n:設置垃圾回收時間占程序運行時間的百分比。公式為1/(1+n)

      并發收集器設置

      -XX:+CMSIncrementalMode:設置為增量模式。適用于單CPU情況。

      -XX:ParallelGCThreads=n:設置并發收集器年輕代收集方式為并行收集時,使用的CPU數。并行收集線程數。

    相關鏈接:

    posted on 2011-11-15 15:15 順其自然EVO 閱讀(201) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

    <2011年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲人JIZZ日本人| 亚洲国产综合专区电影在线| 手机看片久久国产免费| 中文字幕中韩乱码亚洲大片| 亚洲国产精品综合久久网各| 免费国产黄网站在线观看动图| 99精品国产成人a∨免费看| 巨胸喷奶水视频www网免费| 在线观看亚洲精品国产| 亚洲乱码在线卡一卡二卡新区 | 99999久久久久久亚洲| 乱爱性全过程免费视频| 成年女人毛片免费播放人 | 亚洲av乱码一区二区三区香蕉| 高清免费久久午夜精品 | 亚洲欧洲综合在线| 亚洲免费人成在线视频观看| 亚洲A∨精品一区二区三区| 亚洲国产成人va在线观看网址| a级毛片毛片免费观看久潮| 免费一级毛片在线播放| 亚洲综合色婷婷在线观看| 一区二区三区在线免费看| 伊人久久大香线蕉亚洲五月天 | 亚洲精品伦理熟女国产一区二区| 91免费在线播放| 亚洲天堂男人天堂| 午夜影视在线免费观看| 亚洲人成综合网站7777香蕉| 青青青青青青久久久免费观看| 一本久久免费视频| 久久精品国产亚洲AV无码偷窥| 成人A片产无码免费视频在线观看 成人电影在线免费观看 | 亚洲国产av高清无码| 国外成人免费高清激情视频| 精品97国产免费人成视频 | 久久久久亚洲精品美女| 中文字幕免费人成乱码中国| 美腿丝袜亚洲综合| 国产福利视精品永久免费| 亚洲精品自在线拍|