詳細解釋 JavaScript 的記憶體生命週期?
記憶體週期
無論程式語言是什麼,任何程式語言的記憶體週期幾乎都相同。
記憶體生命週期包含 3 個步驟
1) 記憶體分配。
2) 使用已分配的記憶體(讀取或寫入)
3) 當記憶體不再需要時釋放已分配的記憶體。
在低階語言中,第一部分和最後一部分是直接關聯的,但在高階語言(如 JavaScript)中是間接關聯的。
1) JavaScript 中的記憶體分配
JavaScript 被稱為垃圾回收語言,也就是說,當宣告變數時,它會自動為它們分配記憶體。當沒有更多引用宣告的變數時,分配的記憶體將被釋放。
示例
在下面的示例中,javascript 為一個數字、一個字串和一個物件分配了記憶體。
var n = 989; // allocates memory for a number var s = 'qwerty'; // allocates memory for a string var o = { a: 1, b: null }; // allocates memory for an object and contained values
2) 使用已分配的值
使用值基本上意味著讀取和寫入分配的記憶體。這可以透過讀取或寫入變數或物件屬性的值,甚至將引數傳遞給函式來完成。
3) 當記憶體不再需要時釋放已分配的記憶體
大多數記憶體管理問題都出現在此階段。這裡艱鉅的任務是確定何時不再需要分配的記憶體。為了解決此問題,大多數高階語言都嵌入了一段稱為垃圾回收器的軟體。
垃圾回收器的任務是跟蹤記憶體分配並找出何時不再需要分配的記憶體,以便釋放它。不幸的是,此過程只是一個估計,因為知道某個記憶體塊是否需要的通用問題是不可判定的。(演算法無法跟蹤)
Javascript 垃圾回收器使用一些演算法,例如引用計數垃圾回收,來確定不再使用的記憶體。
廣告