javaScript垃圾回收

本文介绍了JavaScript中的垃圾回收机制,包括引用计数法、Mark-Sweep标记清除算法及Mark-Compact标记整理算法,并详细阐述了V8引擎所采用的空间复制、标记整理及增量分代回收等算法。
摘要由CSDN通过智能技术生成

        垃圾回收机制也称Garbage Collection简称GC。在JavaScript中拥有自动的垃圾回收机制,通过一些回收算法,找出不再使用的变量或属性,由JS引擎按照固定时间间隔周期性的释放其所占的内存空间。

一般的GC算法:

1、引用计数法

设置引用数,判断当前引用数是否为零

优点:可以即时回收垃圾对象,减少程序卡顿时间

缺点:无法回收循环引用的对象,资源消耗较大

2、Mark-Sweep(标记清除)

分标记和清除两个阶段完成,遍历所有的对象找到标记活动对象,遍历所有对象清除没有标记的对象,回收相应的空间。

优点: 循环引用不能回收

缺点:存储空间碎片化、不能立即回收空间

3、Mark-Compact(标记整理)

先标记,再整理成连续的线性空间。

优点:减少碎片化空间,不会立即回收垃圾对象

V8常用GC算法:

  1. 空间复制
  2. 标记清除
  3. 标记整理
  4. 标记增量
  5. 分代回收:

  • 新生代对象采用复制算法+标记整理。

        新生代内存一分为二,活动对象存储于使用空间From中,标记整理后将活动对象copy到空闲空间To。From与To交换空间完成释放。

  • 老生代采用标记清除、标记整理、增量标记算法。

        老生代就是指存活时间较长的对象,如全局变量下的一些对象和闭包里的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值