Js Garbage Collection Async Sync SingleThread

  • 80
  • 0
  • Js
  • 2020-01-08

記憶體回收機制

mdn : 

這個演算法將原本「這個物件再也不會被使用」的廣泛定義縮減到「沒有其他任何物件參考它」。如果一個物件不在被任何物件參考,它將被視為可回收記憶體的垃圾。

Js為SingleThread

Async : Event queue 事件註列 存放非同步函式

Garbage Collection

當函式執行時,於函式內的宣告變數,會於記憶體上,當函式執行完時,記憶體上會釋放變數

於chrome F12下,Memory下Takeheap snapshot,就可看到目前使用的記憶體

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Async Sync SingleThread

當同步程式已執行完,才執行非同步 Event queue

for (var i = 0 ; i < 3 ; i++)

    setTimeout( function() {

        console.log(i);

    },0);

}

同步 : for 執行完時,i = 3;

非同步 : 上方執行完時 i = 3; 才執行 setTimeout 的console 所以會列印 3次的 3

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

reference : 

Mdn : https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Memory_Management