GC常用參數

### GC常用參數

* -Xmn -Xms -Xmx -Xss
  年輕代 最小堆 最大堆 棧空間
* -XX:+UseTLAB
  使用TLAB,默認打開
* -XX:+PrintTLAB
  打印TLAB的使用情況
* -XX:TLABSize
  設置TLAB大小
* -XX:+DisableExplictGC(默認啓用)
  System.gc()不管用 ,FGC
* -XX:+PrintGC
* -XX:+PrintGCDetails
* -XX:+PrintHeapAtGC
* -XX:+PrintGCTimeStamps
* -XX:+PrintGCApplicationConcurrentTime (低)
  打印應用程序時間
* -XX:+PrintGCApplicationStoppedTime (低)
  打印暫停時長
* -XX:+PrintReferenceGC (重要性低)
  記錄回收了多少種不同引用類型的引用
* -verbose:class
  類加載詳細過程
* -XX:+PrintVMOptions
* -XX:+PrintFlagsFinal  -XX:+PrintFlagsInitial
  必須會用
* -Xloggc:opt/log/gc.log
* -XX:MaxTenuringThreshold
  升代年齡,最大值15
* 鎖自旋次數 -XX:PreBlockSpin 熱點代碼檢測參數-XX:CompileThreshold 逃逸分析 標量替換 ... 
  這些不建議設置

### Parallel常用參數

* -XX:SurvivorRatio
* -XX:PreTenureSizeThreshold
  大對象到底多大
* -XX:MaxTenuringThreshold
* -XX:+ParallelGCThreads
  並行收集器的線程數,同樣適用於CMS,一般設爲和CPU核數相同
* -XX:+UseAdaptiveSizePolicy
  自動選擇各區大小比例

### CMS常用參數

* -XX:+UseConcMarkSweepGC
* -XX:ParallelCMSThreads
  CMS線程數量
* -XX:CMSInitiatingOccupancyFraction
  使用多少比例的老年代後開始CMS收集,默認是68%(近似值),如果頻繁發生SerialOld卡頓,應該調小,(頻繁CMS回收)
* -XX:+UseCMSCompactAtFullCollection
  在FGC時進行壓縮
* -XX:CMSFullGCsBeforeCompaction
  多少次FGC之後進行壓縮
* -XX:+CMSClassUnloadingEnabled
* -XX:CMSInitiatingPermOccupancyFraction
  達到什麼比例時進行Perm回收
* GCTimeRatio
  設置GC時間佔用程序運行時間的百分比
* -XX:MaxGCPauseMillis
  停頓時間,是一個建議時間,GC會嘗試用各種手段達到這個時間,比如減小年輕代

### G1常用參數

* -XX:+UseG1GC
* -XX:MaxGCPauseMillis
  建議值,G1會嘗試調整Young區的塊數來達到這個值
* -XX:GCPauseIntervalMillis
  GC的暫停間隔目標
* -XX:+G1HeapRegionSize
  分區大小,建議逐漸增大該值,1 2 4 8 16 32。
  隨着size增加,垃圾的存活時間更長,GC間隔更長,但每次GC的時間也會更長
  ZGC做了改進(動態區塊大小)
* G1NewSizePercent
  新生代最小比例,默認爲5%
* G1MaxNewSizePercent
  新生代最大比例,默認爲60%
* GCTimeRatio
  GC時間建議比例,G1會根據這個值調整堆空間
* ConcGCThreads
  線程數量
* InitiatingHeapOccupancyPercent
  啓動G1的堆空間佔用比例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章