GC的設置

堆的回顧

 

串行收集器

一、最古老,最穩定算法

二、效率高多線程

三、停頓時間長併發

四、-XX:+UseSerialGC性能

        新生代和老年代使用串行回收線程

        新生代複製算法對象

        老年代標記-壓縮blog

 

並行收集器

PerNew

一、-XX:+UserPerNewGC內存

       新生代 並行回收it

       老年代 串行回收io

二、多線程 ,多核支持

三、複製算法

四、-XX:ParallelGCThreads    限制線程數量

多線程不必定比單線程塊

 Palallel收集器

 一、相似於PerNew

二、在串行化 基礎上,新生代與老年代的並行化

三、更關注吞吐量

-XX:+UserPalallelGC新生代並行   老年代串行

-XX:+UserPalallelOldGC  新生代並行   老年代並行

 

其餘:

 -XX:MaxGCPauseMills 最大的停頓時間, 單位毫秒  ,盡力保證gc操做不會超過改時間

   -XX: GCTimeRatio    0----100範圍 ,垃圾收集時間佔總時間的比  默認爲99,表示最大使用1%的時間去作GC

這兩個參數比較矛盾,由於停頓時間和吞吐量不能同時調優

 

                       

CMS收集器(併發標記  清除)   這裏的併發 是與用戶線程一塊兒執行

一、標記  清除算法

二、併發階段會下降吞吐量

三、老年代收集器 (新生代使用PerNew)

四、停頓時間少

五、-XX: +UseConMarkSweepGC

 

着重實現了標記的過程:

一、初試標記

      根能夠直接關聯到的對象

     速度塊

二、併發標記(和用戶線程一塊兒執行)

      主要過程,標記全部的對象

三、從新標記

      因爲併發標記的時候,用戶線程正在執行,所以在正式清理前,再次修正

四、併發清除

       將標記的結果,直接清除

特色:

一、儘量的下降停頓

二、影響系統的性能

三、清理不完全

四、和用戶線程一塊兒執行,不能在空間快滿的時候 再清理

-XX:CMSInitiatingOccupancyFraction設置觸發GC的閾值
若是不幸內存預留空間不夠,就會引發concurrent mode failure  ,以後會使用 串行收集器, 會停頓稍長時間

其餘:

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

相關文章
相關標籤/搜索