Javascript記憶體回收機制

來源:互聯網
上載者:User

      Javascript具有自動垃圾收集機制(GC:Garbage Collection)。這種垃圾收集機制的原理很簡單:找出那些不再繼續使用的變數,然後釋放其佔用的記憶體。垃圾收集器會按照固定的時間間隔,周期性的執行這一操作。

      javascript中最常用的垃圾收集方式是標記清除(mark-and-sweep)。當變數進入環境時,就將這個變數標記為“進入環境”,而當變數離開環境時,這將其標記為“離開環境”。打上“離開環境”標記的變數,會在記憶體回收行程執行操作時從刪除其佔用的空間。總之,GC會自動回收那些沒有被引用的對象

執行個體1:

function func(){  var arr= ["value1","value2"];  return arr;}var m = func();alert(m);//value1,value2

 func函數中局部變數(arr)在函數返回以後,並不一定會被立即回收,而是會等待不再被引用的時候,才會被回收!因為有m一直引用著該數組。但一旦手動將 m = null,該數組將因為無引用被自動回收。

執行個體2:

function outerFunc(){  var num= 10;  function innerFunc(){    num *= 2;    return num;  }  return innerFunc;}//將innerFunc函數賦值給refInnerFuncvar refInnerFunc = outerFunc();refInnerFunc(); // return 20 變數num依然存在記憶體中,並可被innerFunc訪問並修改refInnerFunc(); // return 40

在執行完outerFunc()函數後,其局部變數num並沒有被GC回收,而是一直存在記憶體中,因為在innerFunc中一直儲存著對num的引用,所以num不會被GC回收。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.