真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript內(nèi)存回收機(jī)制的原理是什么

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)JavaScript內(nèi)存回收機(jī)制的原理是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)蓬安,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

1.用局部變量和全局變量解釋GC

GC在回收內(nèi)存時(shí),首先會(huì)判斷該對(duì)象是否被其它對(duì)象引用.在確定沒有其它對(duì)象引用便釋放該對(duì)象內(nèi)存區(qū)域.因此如何確定對(duì)象不再被引用是

GC的關(guān)鍵所在.

 

如上代碼中,執(zhí)行完cc()后a1被回收了,此后我們可以通過b1.rr彈出文字窗口.在一些基礎(chǔ)書籍中解釋為:a1為局部變量,b1是全局變量.局部

變量執(zhí)行完后會(huì)被GC回收.但不全是這樣,如下代碼:

此時(shí)cc函數(shù)中的 a1,b1都是局部變量,但仍然會(huì)彈出文字窗口.說明b1并沒有被GC回收.因此JavaScript中局部變量不是所有時(shí)候都被GC回收的.

2.抽象理解GC

GC回收機(jī)制還需要近一步了解。在此時(shí)引入幾個(gè)概念:雙向鏈表,作用域鏈,活動(dòng)對(duì)象(為了方便理解,簡(jiǎn)化了原文的概念

[http://softbbs.pconline.com.cn/9497825.html]) , 其中雙向鏈表描述復(fù)雜對(duì)象的上下層級(jí)關(guān)系. 作用域鏈與活動(dòng)對(duì)象分別是雙向鏈表

中的某個(gè)節(jié)點(diǎn).以函數(shù)cc為例變量層級(jí)關(guān)系為:

window<=>cc<=>a1<=>rr                          <=>b1<=>rr

(原文有詳細(xì)解釋)在執(zhí)行cc()方法時(shí),內(nèi)存中變量的引用關(guān)系如上圖,文字解釋如下:

window的活動(dòng)對(duì)象包括cc,假設(shè)window是***對(duì)象(因?yàn)檫\(yùn)行中不會(huì)被回收)

cc的活動(dòng)對(duì)象包括a1和b1,其作用域鏈?zhǔn)莣indow

a1的活動(dòng)對(duì)象包括rr,其作用域鏈?zhǔn)莄c

b1的活動(dòng)對(duì)象包括rr,其作用域鏈?zhǔn)莄c

執(zhí)行cc()時(shí),cc的執(zhí)行環(huán)境會(huì)創(chuàng)建一個(gè)活動(dòng)對(duì)象和一個(gè)作用域鏈.其局部變量a1,b1都會(huì)掛在cc的活動(dòng)對(duì)象中.當(dāng)cc()執(zhí)行完畢后,執(zhí)行環(huán)境

會(huì)嘗試回收活動(dòng)對(duì)象占用的內(nèi)存.但因局部變量b1 通過return b1,為其增加了一條作用域鏈:window<=>b1<=>rr,所以GC停止對(duì)b1回收.

因此如果想將一個(gè)局部變量/函數(shù)提升為全局的,為其增加一條作用域鏈就OK了。

同時(shí)控制好對(duì)象的作用域鏈也變得重要了.因作用域鏈會(huì)意外導(dǎo)致GC無法回收目標(biāo)對(duì)象.例如:

            

上述就是小編為大家分享的JavaScript內(nèi)存回收機(jī)制的原理是什么了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)頁標(biāo)題:JavaScript內(nèi)存回收機(jī)制的原理是什么
URL標(biāo)題:http://weahome.cn/article/gjjchh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部