第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js標(biāo)記清楚的過程理解

js標(biāo)記清楚的過程理解

喵喵時光機(jī) 2019-04-27 17:18:59
垃圾收集器在運行的時候會給存儲在內(nèi)存中的所有變量都加上標(biāo)記。然后,它會去掉環(huán)境中的變量以及被環(huán)境中的變量引用的變量的標(biāo)記。而在此之后再被加上標(biāo)記的變量將被視為準(zhǔn)備刪除的變量,原因是環(huán)境中的變量已經(jīng)無法訪問到這些變量了。感覺這些話說的讓我難以理解。尤其這句話(它會去掉環(huán)境中的變量以及被環(huán)境中的變量引用的變量的標(biāo)記。而在此之后再被加上標(biāo)記的變量將被視為準(zhǔn)備刪除的變量,原因是環(huán)境中的變量已經(jīng)無法訪問到這些變量了)請懂得老哥們不嫌麻煩就下面的例子解釋一下這話的含義。謝謝了functiontes(){vara=3;varb=2;varc=a;}tes()
查看完整描述

2 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗 獲得超3個贊

環(huán)境中的變量你可以理解為正在使用的變量。
這句話的意思是說,先認(rèn)為所有對象都是要清除的,然后遍歷正在使用的那些對象,以及由那些對象所引用的其他對象。所有這些對象都找出來之后,剩下的就是沒有在使用的對象了,就可以被垃圾回收了。
標(biāo)記清除的好處就是可以解決循環(huán)引用問題。a和b相互引用,引用計數(shù)都是1,所以只用引用計數(shù)的話兩個都沒辦法回收。但是用標(biāo)記清除就可以。
標(biāo)記有用對象的過程其實就是可達(dá)測試的過程。你可以想象整個內(nèi)存是一個大海,每個對象都是一個島嶼,相互之間用大橋連接,現(xiàn)在要找出與大陸相連的島嶼,那么就從大陸出發(fā),依次標(biāo)記所能達(dá)到的每個島嶼,最后沒有被標(biāo)記到的島嶼就是孤島,可以當(dāng)垃圾清除掉。即使兩個孤島之間相互有橋連接也沒用,因為與大陸不通啊。
這個大陸就是應(yīng)用程序,或者說是應(yīng)用程序里的根對象。每次遍歷的時候都是從這個根對象出發(fā)的。
不知道這么說你能明白嗎?
最后再來說說你題目里那個例子。你那個例子是不恰當(dāng)?shù)?,因為abc三個變量都是臨時變量,存在于棧中,會自動回收。它們的值是原始類型,不是對象,因此也不存在垃圾回收的問題。記住垃圾回收只作用于對象。
所以你的例子當(dāng)函數(shù)執(zhí)行完之后,這些臨時變量和它們的值呼啦一下都沒了,根本沒有垃圾回收什么事兒。
                            
查看完整回答
反對 回復(fù) 2019-04-27
  • 2 回答
  • 0 關(guān)注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號