javascript中的GC算法

GC算法分类

  • 引用计数
  • 标记清除
  • 标记整理
  • 分代回收

引用计数算法实现原理

给每个对象在创建的时候分配一个引用技术器,计数对象被引用的次数,当引用次数为0是,可以立即进行回收。
优缺点:

1,当对象引用为0时,可以立即进行回收,减少页面卡顿
2,循环引用的对象不能进行回收
3,要为每个对象创建计数器,在对象引用数改变的时候,需要对计数器进行修改,空间时间消耗大
复制代码

标记清除算法实现原理

从根节点开始遍历所有可达对象,并标记为活动对象,然会再进行第二遍遍历对象,对于没有标记的对象进行清除,同时清除之前做的标记

优缺点:

1,无用对象不能立即进行回收处理
2,可以对循环引用的对象进行回收
3,回收地址不连续
复制代码

image.png
可以看到收集到的蓝色区域的内存是不连续的。

标记整理实现算法

是标记清除算法的增强版,在回收之前,将回收对象和不回收对象地址整理,保证回收的地址是连续的

优缺点:

1,无法立即回收对象
2,回收地址连续
复制代码

image.png

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享