GC參數

說GC參數前 先說下Java 中得三個收集器算法

串行收集器

  • 最古老,最穩定,效率高。
  • 可能會形成較長時間得停頓
  • -XX:+UseSerialGC,使用這收集器得時候,新生代、老年代使用串行回收,新生代使用複製算法,老年代使用標記-壓縮算法

並行收集器

ParNew
  • -XX:+UseParNewGC:新生代並行,老年代串行
  • Serial收集器新生代得並行版本
  • 使用複製算法
  • 多線程,須要多核支持
  • -XX:ParallelGCThreads 限制線程數量
Parallel

相似於ParNew 新生代使用複製算法,老年代使用標記-壓縮算法多線程

他與ParNew相比更加管住吞吐量併發

  • -XX:+UseParallelGC : 使用Parallel收集器+老年代串行
  • -XX:+UseParallelOldGC : 使用Parallel收集器+並行老年代

關於並行收集器得參數線程

  • -XX:MaxGCPauseMills:最大停頓時間,單位毫秒,GC盡力保證回收時間不超過設定值
  • -XX:GCTimeRatio :0-100的取值範圍,意思是垃圾收集時間佔總時間的比,默認99,及最大容許1%時間作GC 其實這兩個參數是矛盾的,由於停頓時間和吞吐量不可能同時調優

CMS收集器

Concurrent Mark Sweep 併發標記清除(與用戶線程一塊兒執行),使用標記清除算法。併發階段會下降吞吐量內存

  • -XX:+UseConcMarkSweepGC
  • -XX:+ UseCMSCompactAtFullCollection: Full GC後,進行一次整理 整理過程是獨佔的,會引發停頓時間變長
  • -XX:+CMSFullGCsBeforeCompaction: 設置進行幾回Full GC後,進行一次碎片整理
  • -XX:ParallelCMSThreads: 設定CMS的線程數量

GC 參數整理

  • -XX:+UseSerialGC:在新生代和老年代使用串行收集器
  • -XX:SurvivorRatio:設置eden區大小和survivior區大小的比例
  • -XX:NewRatio:新生代和老年代的比
  • -XX:+UseParNewGC:在新生代使用並行收集器
  • -XX:+UseParallelGC :新生代使用並行回收收集器
  • -XX:+UseParallelOldGC:老年代使用並行回收收集器
  • -XX:ParallelGCThreads:設置用於垃圾回收的線程數
  • -XX:+UseConcMarkSweepGC:新生代使用並行收集器,老年代使用CMS+串行收集器
  • -XX:ParallelCMSThreads:設定CMS的線程數量
  • -XX:CMSInitiatingOccupancyFraction:設置CMS收集器在老年代空間被使用多少後觸發
  • -XX:+UseCMSCompactAtFullCollection:設置CMS收集器在完成垃圾收集後是否要進行一次內存碎片的整理
  • -XX:CMSFullGCsBeforeCompaction:設定進行多少次CMS垃圾回收後,進行一次內存壓縮
  • -XX:+CMSClassUnloadingEnabled:容許對類元數據進行回收
  • -XX:CMSInitiatingPermOccupancyFraction:當永久區佔用率達到這一百分比時,啓動CMS回收
  • -XX:UseCMSInitiatingOccupancyOnly:表示只在到達閥值的時候,才進行CMS回收

emmm這個就先這樣吧,知識儲備還不足it

相關文章
相關標籤/搜索