javascript垃圾回收机制是什么

1、js的数据(字符串、数组、对象)没有固定的大小,js程序在创建这些数据之后这些数据才会被分配内存,所以js的内存分配是动态的,如果一直只分配不回收那么内存被消耗完程序就会崩溃。

2、这就是js需要垃圾回收的原因,这些使用完之后还没有被回收的数据就是垃圾。

3、js有自己的垃圾回收机制,原理就是js的解释器可以检测到哪些的数据不再被需要,然后释放这些数据侵占的内存。

4、浏览器有两种垃圾回收方式:标记清除和引用计数。
5、标记清除:是js最常用的一种。当变量进入环境的时候被标记为“进入变量”,当变量离开环境的时候被标记为“离开环境”,环境指的是执行环境。垃圾收集器会给存储在内存中的变量全部打上标记,再去掉环境中的变量以及环境中被引用的变量,剩下的就是需要被清除的变量,因为他不再被环境使用,清除这些变量并释放其被使用的内存。
6、引用计数:标记一个值被引用的次数,当声明一个变量并将一个引用类型赋值给该变量的时候,这个值就加一,当被这个引用类型赋值的变量又被另一个值赋值的时候,这个引用类型就减一,当这个值的引用类型为0的时候就是需要被回收了,这样就释放内存。
这种方式IE常用,但是会存在循环引用,内存无法释放的问题。

var a = document.getElementById("aID");
var b = {};
b.property=a;
a.property=b;

改变:手动切断循环引用

a.property=null;
b.property=null;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值