1:是什麼
CMS (Concurrent Mark Sweep)收集器是-種以獲取最短回收停頓時間爲⽬標的收集器。 ⽬前很⼤⼀部分的Java應⽤集中在互聯⽹站或者B/S系統的服務端上,這類應⽤尤其重 視服務 的響應速度,希望系統停頓時間最短,以給⽤戶帶來較好的體驗。CMS 收集器是基於“標記-清除”算法實現的,用戶線程和垃圾線程同時執行。用戶幾乎感受用不到線程的暫停。也就是併發。
2:步驟流程
初始標記(CMS initial mark) -----標記⼀下 GC Roots 能直接關聯到的對象,速度很快
併發標記(CMS concurrent mark --------併發標記階段就是進⾏ GC RootsTracing 的過程
重新標記(CMS remark) -----------爲了修正併發標記期間因⽤戶程序導致標記產⽣變動的標記記錄
併發清除(CMS concurrent sweep)
3:CMS垃圾收集器缺點
對CPU資源⾮常敏感
⽆法處理浮動垃圾,程序在進⾏併發清除階段⽤戶線程所產⽣的新垃圾
標記清除算法存在空間碎⽚