一、最古老,最穩定算法
二、效率高多線程
三、停頓時間長併發
四、-XX:+UseSerialGC性能
新生代和老年代使用串行回收線程
新生代複製算法對象
老年代標記-壓縮blog
一、-XX:+UserPerNewGC內存
新生代 並行回收it
老年代 串行回收io
二、多線程 ,多核支持
三、複製算法
四、-XX:ParallelGCThreads 限制線程數量
多線程不必定比單線程塊
一、相似於PerNew
二、在串行化 基礎上,新生代與老年代的並行化
三、更關注吞吐量
-XX:+UserPalallelGC新生代並行 老年代串行
-XX:+UserPalallelOldGC 新生代並行 老年代並行
-XX:MaxGCPauseMills 最大的停頓時間, 單位毫秒 ,盡力保證gc操做不會超過改時間
-XX: GCTimeRatio 0----100範圍 ,垃圾收集時間佔總時間的比 默認爲99,表示最大使用1%的時間去作GC
這兩個參數比較矛盾,由於停頓時間和吞吐量不能同時調優
一、標記 清除算法
二、併發階段會下降吞吐量
三、老年代收集器 (新生代使用PerNew)
四、停頓時間少
五、-XX: +UseConMarkSweepGC
一、初試標記
根能夠直接關聯到的對象
速度塊
二、併發標記(和用戶線程一塊兒執行)
主要過程,標記全部的對象
三、從新標記
因爲併發標記的時候,用戶線程正在執行,所以在正式清理前,再次修正
四、併發清除
將標記的結果,直接清除
一、儘量的下降停頓
二、影響系統的性能
三、清理不完全
四、和用戶線程一塊兒執行,不能在空間快滿的時候 再清理
-XX:CMSInitiatingOccupancyFraction設置觸發GC的閾值
若是不幸內存預留空間不夠,就會引發concurrent mode failure ,以後會使用 串行收集器, 會停頓稍長時間
-XX:+ UseCMSCompactAtFullCollection Full GC後,進行一次整理整理過程是獨佔的,會引發停頓時間變長-XX:+CMSFullGCsBeforeCompaction 設置進行幾回Full GC後,進行一次碎片整理-XX:ParallelCMSThreads設定CMS的線程數量