前言
JavaScript 的回收機制:當沒有任何物件參考它時,就會被視為可回收的記憶體。
回收機制 Garbage collection
回收機制是一個自動化記憶體管理機制,當某一段程式碼行時,都會暫用一些記憶體,如果沒有 Garbage collection 的機制,那麼記憶體就會很快速的滿出來導致出現所謂的 Lag 等問題
JavaScript 是如何回收記憶體
每一個函式都有屬於它的記憶體空間,當我們執行 a() 或 b() 就會佔用一些記憶體空間,當執行完畢後就會像前面的執行堆疊中的函式釋放一樣釋放記憶體
function a() { // a 的記憶體空間
}
function b() { // b 的記憶體空間
}
不過回收機制(Garbage Collection)也是有條件的,根據MDN的文件:
高階的語言都有一個叫作垃圾回收器(garbage collector) 的軟體,他的工作是追蹤記憶體分配的使用情況,以便自動釋放一個不再使用的記憶體空間,還給系統。 但這個垃圾回收器只是「儘量」做到自動釋放記憶體空間,因為判斷記憶體空間是否要繼續使用,這件事是不可判定的(不能用演算法來解決)。
垃圾回收參考計數(Reference-counting garbage collection)是一個最務實的垃圾回收演算法。 這個演算法將原本「這個物件再也不會被使用」的廣泛定義縮減到「沒有其他任何物件參考它」。如果一個物件不在被任何物件參考,它將被視為可回收記憶體的垃圾。