鍍金池/ 問答/HTML/ js 垃圾收集 標(biāo)記清除過程

js 垃圾收集 標(biāo)記清除過程

原文:垃圾收集器在運(yùn)行的時候會給存儲在內(nèi)存中的所有變量都加上標(biāo)記(當(dāng)然,可以使用任何標(biāo)記方式)。然后,它會去掉環(huán)境中的變量以及被環(huán)境中的變量引用的變量的標(biāo)記。而在此之后再被加上標(biāo)記的變量將被視為準(zhǔn)備刪除的變量,原因是環(huán)境中的變量已經(jīng)無法訪問到這些變量了。最后,垃圾收集器完成內(nèi)存清除工作,銷毀那些帶標(biāo)記的值并回收它們所占用的內(nèi)存空間。

根本理解不了這段話的邏輯,“在此之后再被加上標(biāo)記的變量將被視為準(zhǔn)備刪除的變量”,如果從根結(jié)點(diǎn)開始,那它的子節(jié)點(diǎn)再訪問父屬性加上了標(biāo)記,明明可以訪問到怎么說無法訪問阿?而且遍歷作用域鏈的話每個節(jié)點(diǎn)都會清除標(biāo)記阿,為什么會再加上標(biāo)記?求形象解釋一下這個過程

回答
編輯回答
哎呦喂

引用還在不會清除標(biāo)記

2018年3月6日 18:23
編輯回答
維她命

垃圾收集器中有倆次判斷變量是否要被收集。如果這倆次沒逃脫掉,那就肯定要被收集的。
一是變量未被引用,二是已經(jīng)執(zhí)行過finalize方法。。。
也就是倆次標(biāo)記,具體可以查下Jvm垃圾收集算法。

2017年10月25日 23:09