js垃圾回收機制

引用計數

  1. 此算法把 ”對象是否不再需要“ 簡化定義爲 “對象有沒有其他對象引用到它” 。如果沒有引用指向該對象(零引用), 對象將垃圾回收機制回收
  2. 限制: 無法處理循環引用。兩個對象被創建,並互相引用,形成一個循環,它們被調用之後不會離開函數作用域,所以它們已經沒有用了, 可以被回收了。然而引用計數算法考慮到它們互相都有至少一次引用,所以不會被回收

標記清除

  1. 當變量進入環境時,例如,在函數中聲明一個變量,就將這個變量標記爲“進入環境”。從邏輯上講,永遠不能釋放進入環境的變量所佔用的內存,因爲只要執行流進入相應的環境,就可能會用到它們。而當變量離開環境時,則將其標記爲“離開環境”
  2. 垃圾回收器在運行的時候會給儲存在內存中的所有變量加上標記。然後,他會去掉環境中的變量以及被環境中的變量的標記(閉包)。而在此之後再被加上標記的變量將被視爲準備刪除的變量,原因是環境中的變量已經無法訪問到這些變量了。最後,垃圾回收器完成內存清除工作,銷燬那些帶標記的值並回收他們所佔用的內存空間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章