JavaScript内存管理、闭包和内存泄漏

在这里插入图片描述

JavaScript 的内存管理

JavaScript 会在定义变量时为变量分配内存

  • JS 对于基本数据类型(boolean、string、number、null、undefined)直接在栈空间进行分配;
  • JS 对于复杂数据类型(object)内存分配会在堆空间开辟一块空间,并将这块空间的地址返回给变量引用。

JavaScript 的垃圾回收(GC)机制
JS 会将不再使用的对象将其所占的内存空间释放出来。(GC 算法)

常见的 GC 算法

  • 引用计数:当一个对象有一个引用指向时,对应的计数器+1,当计数器的值为 0 的时候,说明没有引用指向这个对象,那么这个对象就可以被回收掉。**缺点:**循环引用。
  • 标记清除:从根对象开始,查找所有可以从这个根开始可以到达的对象,那么就是可以的,扫描不到的,那么这个对象是不可以用的,这个对象就可以被回收。

JS 引擎采用广泛的就是标记清除算法,但会结合其他的算法对其进行优化</

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值