前端面試題 - JS的垃圾回收機制?

前端面試題 - JS的垃圾回收機制?

有兩種垃圾回收策略:

  • 標記清除:標記階段即爲所有活動對象做上標記,清除階段則把沒有標記(也就是非活動對象)銷燬。
  • 引用計數:它把對象是否不再需要簡化定義爲對象有沒有其他對象引用到它。如果沒有引用指向該對象(引用計數爲 0),對象將被垃圾回收機制回收。

標記清除的缺點:

  • 內存碎片化,空閒內存塊是不連續的,容易出現很多空閒內存塊,還可能會出現分配所需內存過大的對象時找不到合適的塊。
  • 分配速度慢,因爲即便是使用 First-fit 策略,其操作仍是一個 O(n) 的操作,最壞情況是每次都要遍歷到最後,同時因爲碎片化,大對象的分配效率會更慢。

引用計數的缺點:

  • 需要一個計數器,所佔內存空間大,因爲我們也不知道被引用數量的上限。
  • 解決不了循環引用導致的無法回收問題。

通俗易懂的前端面試題網站: https://www.front-interview.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章