晉中達內IT培訓
美國上市IT培訓機構

15834127425

熱門課程

JavaScript垃圾回收機制的原理與應用


垃圾回收機制是我們在學習軟件編程開發技術的時候需要掌握的一個重點功能應用,下面我們就通過案例分析來了解一下,JavaScript垃圾回收機制的原理與應用。

JavaScript垃圾回收機制的原理與應用

JavaScript語言是一門優秀的腳本語言。其中包含腳本語言的靈活性外還擁有許多高級語言的特性。例如充許構建和實例化一個對象,垃圾回收機制(GC:GarbageCollecation)。通常我們使用new創建對象,GC負責回收對象占用內存區域。因此了解GC,可以加深對javascript垃圾回收機制的理解。

GC在回收內存時,先會判斷該對象是否被其它對象引用。在確定沒有其它對象引用便釋放該對象內存區域。因此如何確定對象不再被引用是GC的關鍵所在。

GC回收機制還需要近一步了解。在此時引入幾個概念:雙向鏈表,作用域鏈,活動對象(為了方便理解,簡化了原文的概念,其中雙向鏈表描述復雜對象的上下層級關系。作用域鏈與活動對象分別是雙向鏈表中的某個節點。

在執行cc()方法時,內存中變量的引用解釋如下:

cc的活動對象包括a1和b1,其作用域鏈是window

cc的活動對象包括a1和b1,其作用域鏈是window

a1的活動對象包括rr,其作用域鏈是cc

b1的活動對象包括rr,其作用域鏈是cc

執行cc()時,cc的執行環境會創建一個活動對象和一個作用域鏈。其局部變量a1,b1都會掛在cc的活動對象中。當cc()執行完畢后,執行環境會嘗試回收活動對象占用的內存。但因局部變量b1通過returnb1,為其增加了一條作用域鏈:window<=>b1<=>rr,所以GC停止對b1回收。因此如果想將一個局部變量/函數提升為全局的,為其增加一條作用域鏈就OK了。

【免責聲明】本文系本網編輯部分轉載,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請在30日內與管理員聯系,我們會予以更改或刪除相關文章,以保證您的權益!

預約申請免費試聽課程

         

上一篇:SQLServer性能優化工具分享
下一篇:晉中軟件編程開發http請求方法分享

JavaScript垃圾回收機制的原理與應用

SQLServer性能優化工具分享

HBase大數據開發的不足之處都有哪些

CPU的邏輯模塊都有哪些組成部分

選擇城市和中心
江西省

貴州省

廣西省

海南省

试看120分钟做受小视频