天天看點

浏覽器垃圾回收機制

官方文檔:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management

1、引用計數

對象有沒有其他對象引用到它”。如果沒有引用指向該對象(零引用),對象将被垃圾回收機制回收。

限制:循環引用

2、标記清除

這個算法把“對象是否不再需要”簡化定義為“對象是否可以獲得”。

這個算法假定設定一個叫做根(root)的對象(在Javascript裡,根是全局對象)。垃圾回收器将定期從根開始,找所有從根開始引用的對象,然後找這些對象引用的對象……從根開始,垃圾回收器将找到所有可以獲得的對象和收集所有不能獲得的對象。

從2012年起,所有現代浏覽器都使用了标記-清除垃圾回收算法。所有對JavaScript垃圾回收算法的改進都是基于标記-清除算法的改進

相比【引用計數】的好處:循環引用不再是問題了

限制: 那些無法從根對象查詢到的對象都将被清除