美文网首页
js垃圾回收

js垃圾回收

作者: 罗不错 | 来源:发表于2020-11-04 14:31 被阅读0次

https://zhuanlan.zhihu.com/p/272519496

1. 计数器式 , ie6 ,ie7

优点

发现垃圾时,立即回收
最大限度减少程序暂停
缺点

无法回收循环引用的对象
时间开销大

2.标记-清除算法

这个算法把“对象是否不再需要”简化定义为“对象是否可以获得”。

这个算法假定设置一个叫做根(root)的对象(在 Javascript 里,根是全局对象)。垃圾回收器将定期从根开始,找所有从根开始引用的对象,然后找这些对象引用的对象……从根开始,垃圾回收器将找到所有可以获得的对象和收集所有不能获得的对象。

这个算法比前一个要好,因为“有零引用的对象”总是不可获得的,但是相反却不一定,参考“循环引用”。

从 2012 年起,所有现代浏览器都使用了标记-清除垃圾回收算法。所有对 JavaScript 垃圾回收算法的改进都是基于标记-清除算法的改进,并没有改进标记-清除算法本身和它对“对象是否不再需要”的简化定义。

实现原理

核心思想:分标记和清除二个阶段完成
遍历所有对象并标记活动对象
遍历所有对象清除没有标记的对象
回收相应的空间

标记-清除算法缺点
容易产生内存碎片化空间
标记算法并未在清除未标记对象的时候,进行整理,所以在清除标记后,会产生大量的不连续的内存碎片。
当分配的内存大于现有连续的内存碎片,则会提前触发新一轮的垃圾回收动作;
当分配的内存小于现有连续的内存碎片,则可能会造成浪费。

标记整理算法

实现原理

标记整理可以看做是标记清除的增强
标记阶段的操作和标记清除一致
清除阶段会先执行整理,移动对象位置

相关文章

  • JS 垃圾回收机制

    从下面这几个方面简单介绍:JS 垃圾回收机制,几种?weakMap, WeakSet JS 垃圾回收机制, 标记清...

  • JavaScript内存管理

    JS内存回收 JS 有自动垃圾回收机制,就是找出那些不再继续使用的值,然后释放其占用的内存。 垃圾回收算法: 引用...

  • JS内存空间详解(摘录)

    js具有自动垃圾回收机制,垃圾回收的方法有两种:标记清除法、计数清除法 垃圾回收的实现算法: 垃圾回收器创建一个"...

  • 垃圾回收

    js的垃圾回收 原文:https://segmentfault.com/a/1190000018605776 垃圾...

  • js内存管理

    导读:js是高级语言,有自带的垃圾回收器,一般认为js开发可以不用关心内存管理。然而这是错误的。 js垃圾回收算法...

  • 闭包的理解。

    js的垃圾回收机制 当一个函数执行完,js引擎会回收不再使用的内存,闭包通过这个作用域的引用,阻止了垃圾回收。 什...

  • 垃圾回收

    垃圾回收一共分两种:栈中的垃圾回收和堆中的垃圾回收 栈中的垃圾回收 JS 引擎有一个记录当前执行状态的指针,称为 ...

  • Javascript垃圾回收机制

    简介 JS自带一套内存管理引擎,负责创建对象、销毁对象,以及垃圾回收。这期探讨一下垃圾回收机制。垃圾回收机制主要是...

  • js垃圾回收

    像C语言这种偏底层的高级语言,是需要程序员手动申请和释放内存的,典型的用了 malloc 和 free 两种方法。...

  • js 垃圾回收

    js 中垃圾回收机制 引用内存会一直存在,直到不被使用标记,人为清除如:设为 null、浏览器关闭、页面关闭 局部...

网友评论

      本文标题:js垃圾回收

      本文链接:https://www.haomeiwen.com/subject/kwzwvktx.html