CMS(concurrent mark sweep)在jdk1.5中已經開始使用了,2004年9月30日,JDK1.5發佈。CMS設計的目標就是獲取最低停頓時間(stop the world停頓時間),它是基於
標記-清除算法實現的。經常使用的場景是互聯網網站(對服務響應要求較高),它是一個老年代垃圾收集器,能夠和
Serial收集器,
Parallel New收集器配合使用。當並行模式(concurrent mode failure)失敗時CMS會退化成
Serial Old.
CMS收集器的工做流程(步驟)是什麼樣的?
主要四個階段
初始標記:只標記和GC Roots能直連的對象,速度快,會發生(stop the world)
併發標記:和應用線程併發執行,遍歷初始標記階段標記過的對象,標記這些對象的可達對象。
從新標記:因爲併發標記是和應用線程是併發執行的,因此有些標記過的對象發生了變化。這個過程比初始標記用時長,可是比併發標記階段用時短。會發生(stop the world)