java cms垃圾回收器總結

cms (concurrent mark sweep) 基於標記-清除 算法實現的。獲取最短停頓時間的收集器算法

一。主要步驟:併發

1. 初始化標記 ( inittial mark) :須要stop world線程

    僅標記gc root(系統類加載器,線程棧對象,本地棧對象等) 能夠直接關聯到的對象,因爲只會標記第一層,因此很快對象

2.併發標記 (concureny mark): 耗時最長內存

  與應用線程同時執行,不須要 stop world,根據1的結果,標記所有對象rem

3.從新標記(remark):須要stop worldit

 標記 併發標記過程當中因爲用戶運行而產生變化的對象,耗時較短gc

4.併發清除cpu

二。缺點cms

1. cpu敏感

2. 沒法處理浮動垃圾(cms運行階段內存沒法知足用戶線程的須要:1 老年代申請內存過快,2.新生代過來的對象過多,),致使full gc,則使用SerialOld作後備收集器

3.基於 標記-清除算法實現,會產生過多的垃圾碎片,解決方案:fullGC 進行碎片壓縮

相關文章
相關標籤/搜索