CMS垃圾收集器——重新標(biāo)記的討論

《深入理解java虛擬機(jī) 第二版 JVM高級(jí)特性與最佳實(shí)踐》里面提到CMS垃圾收集器。

CMS垃圾收集器的垃圾回收分4個(gè)步驟:

  • 初始標(biāo)記(CMS initial mark)
  • 并發(fā)標(biāo)記(CMS concurrent mark)
  • 重新標(biāo)記(重新標(biāo)記)
  • 并發(fā)清除(CMS concurrent sweep)

初始標(biāo)記:僅僅標(biāo)記GC Root能直接關(guān)聯(lián)到的對(duì)象。
并發(fā)標(biāo)記:對(duì)初始標(biāo)記標(biāo)記過(guò)的對(duì)象,進(jìn)行trace(進(jìn)行追蹤,得到所有關(guān)聯(lián)的對(duì)象,進(jìn)行標(biāo)記)
重新標(biāo)記:(原文):為了修正并發(fā)標(biāo)記期間因用戶程序繼續(xù)運(yùn)作而導(dǎo)致標(biāo)記產(chǎn)生變動(dòng)的那一部分對(duì)象的標(biāo)記記錄。

導(dǎo)致產(chǎn)生變動(dòng)的那一部分對(duì)象,到底是哪部分對(duì)象?
網(wǎng)上查找很多資料,鮮有講清楚這個(gè)問(wèn)題的文章。結(jié)合找到的所有資料,我認(rèn)為應(yīng)該是這樣的:
重新標(biāo)記,重新從GC Root開(kāi)始查找新關(guān)聯(lián)的對(duì)象,并進(jìn)行標(biāo)記;而初始標(biāo)記、并行標(biāo)記兩個(gè)步驟標(biāo)記的對(duì)象,即使并行標(biāo)記過(guò)程中已經(jīng)沒(méi)有相關(guān)引用了,也不會(huì)再去清除這些對(duì)象的標(biāo)記(直到等到下一次GC發(fā)生的時(shí)候再去清除)

參考:

  1. [翻譯]G1垃圾收集器(四) 之 回顧GC以及CMS
  2. 關(guān)于CMS、G1垃圾回收器的重新標(biāo)記、最終標(biāo)記疑惑?
  3. 了解CMS(Concurrent Mark-Sweep)垃圾回收器
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 作者:一字馬胡 轉(zhuǎn)載標(biāo)志 【2017-11-12】 更新日志 日期更新內(nèi)容備注 2017-11-12新建文章初版 ...
    beneke閱讀 2,325評(píng)論 0 7
  • 通過(guò)這篇文章你能知道的問(wèn)題: 1.如何判斷對(duì)象是活著還是死去? 2.在Java語(yǔ)言中,可作為GCRoots的對(duì)象有...
    beneke閱讀 1,427評(píng)論 0 1
  • JVM架構(gòu) 當(dāng)一個(gè)程序啟動(dòng)之前,它的class會(huì)被類裝載器裝入方法區(qū)(Permanent區(qū)),執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,827評(píng)論 0 7
  • 聲明:原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。http://www.itdecent.cn/u/e02df63eaa87 垃圾收...
    唐影若凡閱讀 1,150評(píng)論 1 6
  • 我覺(jué)得這部電影解決了,女兒起床困難的這個(gè)頑疾。其實(shí)一個(gè)人的生活給我們每個(gè)人廣闊天地都不一樣。 我自己左右不了這些事...
    105d45b91b02閱讀 198評(píng)論 0 0

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