記憶體回收機制
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