常见GC算法

2020-10-14  本文已影响0人  浅忆_0810

1. 介绍

GCGarbage Collection)就是垃圾回收机制的简写

1.1 GC算法

JavaScript中的垃圾:

  • JavaScript中内存管理时自动的

  • 对象不再被引用时是垃圾

  • 对象不能从根上访问到时是垃圾

1.2 例如:


2. 引用计数算法

原理:通过一个引用计数器维护当前对象的引用数,然后判断该对象的引用值是否为0,如果为0GC会对将所在的对象空间进行回收释放再使用


3. 标记清除算法

核心思想:分标记和清除两个阶段完成
1. 遍历所有对象将当前可达活动对象进行标记
/*
  可达对象:
    可以访问到的对象就是可达对象
    可达的标准就是从根出发是否能够被找到
    JavaScript中的根就可以理解为全局变量对象
*/
2. 遍历所有对象清除没有标记对象
3. 回收相应的空间

4. 标记整理算法

原理:

  1. 标记整理可以看作是标记清除的增强
  2. 标记阶段的操作和标记清除一致
  3. 清除阶段会先执行整理,移动对象位置,让地址上产生连续

5. 总结

优点 缺点
引用计数算法 1. 可以即时回收垃圾对象
2. 减少程序卡顿时间
1. 无法回收循环引用的对象
2. 资源消耗较大
标记清除算法 可以回收回收循环引用的对象 1. 容易产生碎片化空间,浪费空间
2. 不会立即回收垃圾对象
标记整理算法 减少碎片化空间 1. 不会立即回收垃圾对象<br />2. 移动对象位置,回收效率慢
上一篇 下一篇

猜你喜欢

热点阅读