CMS垃圾回收器的參數設置


  • -XX:+UseConcMarkSweepGC 手動指定使用CMS收集器執行內存回收任務。
    • 開啟該參數后會自動將-XX:+UseParNewGC打開。即: ParNew(Young區用)+CMS(Old區用)+Serial Old的組合。
  • -XX:CMSlnitiatingOccupanyFraction 設置堆內存使用率的閾值,一旦達到該閾值,便開始進行回收。
    • JDK5及以前版本的默認值為68,即當老年代的空間使用率達到68%時,會執行一次CMS回收。JDK6及以上版本默認值為92%
    • 如果內存增長緩慢,則可以設置一個稍大的值,大的閾值可以有效降低CMS的觸發頻率,減少老年代回收的次數可以較為明顯地改善應用程序性能。反之,如果應用程序內存使用率增長很快,則應該降低這個閾值,以避免頻繁觸發老年代串行收集器。因此通過該選項可便可以有效降低Full GC的執行次數。
  • -XX:+UseCMSCompactAtFullCollection用於指定在執行完Full GC后對內存空間進行壓縮整理,以此避免內存碎片的產生。不過由於內存壓縮整理過程無法並發執行,所帶來的問題就是停頓時間變得更長了。
  • -XX:CMSFullGCsBeforeCompaction設置在執行多少次Full GC后對內存空間進行壓縮整理。
  • -XX:ParallelCMSThreads設置CMS的線程數量。
    • CMS默認啟動的線程數是(ParallelGCThreads+3)/4,ParallelGCThreads 是年輕代並行收集器的線程數。當CPU資源比較緊張時,受到CMS收集器線程的影響,應用程序的性能在垃圾回收階段可能會非常糟糕。


作者:Shaw_Young
鏈接:https://www.jianshu.com/p/2082cbe0b776
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM