目錄
問題分析
問題答案
問題分析
三色標(biāo)記法是Java虛擬機(jī)(JVM)中垃圾回收算法的一種,主要用來標(biāo)記內(nèi)存中存活和需要回收的對象。
它的好處是,可以讓JVM不發(fā)生或僅短時(shí)間發(fā)生STW(Stop The World),從而達(dá)到清除JVM內(nèi)存垃圾的目的,JVM中的「CMS、G1垃圾回收器」都用到了三色標(biāo)記法。
下面來看一下這個(gè)問題的解答。
問題答案
在三色標(biāo)記法中,Java虛擬機(jī)將內(nèi)存中的對象分為三個(gè)顏色:
1. ??白色:表示還沒有被垃圾回收器掃描的對象;
2. ??黑色:表示已經(jīng)被垃圾回收器掃描過,且對象及其引用的其他對象都是存活的;
3. ??灰色:表示已經(jīng)被垃圾回收器掃描過,但對象引用的其他對象尚未被掃描。
在GC開始時(shí)(如圖),先將所有對象都標(biāo)記為白色,然后從根對象開始遍歷內(nèi)存中的對象,接著把直接引用的對象標(biāo)記為灰色。
再判斷灰色集合中的對象是否存在子引用,不存在咋放入黑色集合,如果存在,就把子引用對象放入到灰色集合。
按照這樣一個(gè)步驟不斷推導(dǎo),直到灰色集合中所有的對象變黑后,本輪標(biāo)記完成。最后,還處于白色標(biāo)記的對象就是不可達(dá)對象,可以直接被回收。文章來源:http://www.zghlxwxcb.cn/news/detail-732527.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-732527.html
到了這里,關(guān)于大廠面試題-JVM中的三色標(biāo)記法是什么?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!