JS 記憶體生命周期
-
分配你所需要的記憶體
-
使用分配到的記憶體(讀、寫)
-
不需要時將其釋放、歸還
什么是垃圾回識訓制?
垃圾回識訓制就是找出那些不再繼續使用的值,然后釋放其占用的記憶體空間,垃圾回收器每隔固定的時間段就執行一次釋放操作
垃圾回收執行的方式有哪些?
標記清除
-
不能釋放“進入環境”的變數所占的記憶體,只要執行流進入相應的環境,就有可能用到他們,而當變數離開環境的時候,則將其標記為“離開環境”
-
進行標記的方式有很多種:翻轉某個特殊位來來記錄一個變數何時進入環境;使用一個“進入環境”變數串列和一個“離開環境”串列
-
垃圾回收器在運行的時候會給所有變數都加上標記,然后,環境中的變數以及環境中的變數參考的變數,他們身上的標記會被去掉
-
而在此之后再被加上標記的變數將被視為準備洗掉的變數,原因是環境中的變數已經無法訪問到這些變數了
-
最后,垃圾收集器完成記憶體清除作業,銷毀那些帶標記的值并回收它們所占用的記憶體空間
參考計數
跟蹤記錄每個值被參考的次數
-
當宣告了一個變數,并將一個參考型別值賦值給該變數時,則這個值的參考次數就是 1
-
如果同一個值又被賦給另外一個變數,則該值得參考次數加 1
-
相反,如果包含對這個值參考的變數又取得了另外一個值,則這個值的參考次數減 1
-
當這個值的參考次數變成 0 時,則說明沒有辦法再訪問這個值了,因而就可以將其占用的記憶體空間回識訓來
-
這樣,當垃圾收集器下次再運行時,它就會釋放那 些參考次數為零的值所占用的記憶體
-
回圈參考如果在 IE 中是不會被清除的,必須要手動清除,否則會導致記憶體泄露
文章的內容/靈感都從下方內容中借鑒
-
【持續維護/更新 500+前端面試題/筆記】https://github.com/noxussj/Interview-Questions/issues
-
【大資料可視化圖表插件】https://www.npmjs.com/package/ns-echarts
-
【利用 THREE.JS 實作 3D 城市建模(珠海市)】https://3d.noxussj.top/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/298280.html
標籤:其他
