CMS垃圾收集器

Concurrent mark sweep(CMS)收集器是一種年老代垃圾收集器,其最主要目標(biāo)是獲取最短垃圾 回收停頓時(shí)間,和其他年老代使用標(biāo)記-整理算法不同,它使用多線程的標(biāo)記-清除算法。

最短的垃圾收集停頓時(shí)間可以為交互比較高的程序提高用戶體驗(yàn)。

CMS 工作機(jī)制相比其他的垃圾收集器來說更復(fù)雜,整個(gè)過程分為以下 4 個(gè)階段:

  • 初始標(biāo)記

只是標(biāo)記一下 GC Roots 能直接關(guān)聯(lián)的對(duì)象,速度很快,仍然需要暫停所有的工作線程。

  • 并發(fā)標(biāo)記

進(jìn)行 GC Roots 跟蹤的過程,和用戶線程一起工作,不需要暫停工作線程。

  • 重新標(biāo)記

為了修正在并發(fā)標(biāo)記期間,因用戶程序繼續(xù)運(yùn)行而導(dǎo)致標(biāo)記產(chǎn)生變動(dòng)的那一部分對(duì)象的標(biāo)記 記錄,仍然需要暫停所有的工作線程。

  • 并發(fā)清除

清除 GC Roots 不可達(dá)對(duì)象,和用戶線程一起工作,不需要暫停工作線程。由于耗時(shí)最長的并 發(fā)標(biāo)記和并發(fā)清除過程中,垃圾收集線程可以和用戶現(xiàn)在一起并發(fā)工作,所以總體上來看 CMS 收集器的內(nèi)存回收和用戶線程是一起并發(fā)地執(zhí)行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • CMS是老年代垃圾收集器,在收集過程中可以與用戶線程并發(fā)操作。它可以與Serial收集器和Parallel New...
    zhong0316閱讀 40,988評(píng)論 2 27
  • Java和C++之間有一堵由內(nèi)存動(dòng)態(tài)分配和垃圾收集技術(shù)所圍成的“高墻”,墻外面的人想進(jìn)來,墻里面的人想出來。 對(duì)象...
    胡二囧閱讀 1,329評(píng)論 0 4
  • 通過這篇文章你能知道的問題: 1.如何判斷對(duì)象是活著還是死去? 2.在Java語言中,可作為GCRoots的對(duì)象有...
    beneke閱讀 1,429評(píng)論 0 1
  • 一、新生代垃圾回收器的比較: 二、老年代垃圾回收器的比較: 四、CMS的特性 1、CMS只會(huì)回收老年代和永久代的垃...
    紫雨杰閱讀 746評(píng)論 0 0
  • CMS介紹 CMS全稱Concurrent Mark Sweep,從名字可知是基于“標(biāo)記——清除”算法實(shí)現(xiàn)。以獲取...
    EnigmaXXX閱讀 1,397評(píng)論 0 1

友情鏈接更多精彩內(nèi)容