js的event loop/js内存泄漏

js的event-loop机制
event-loop主要有三部分组成 执行栈,消息队列、微任务队列
执行优先级是 执行栈>微任务队列>消息对系列
js是单线程语言,event loop开始时会从全局栈开始一行一行执行,遇到函数调用,则压入执行栈执行,叫做帧,当函数返回后会从执行栈弹出,直到函数执行完毕,执行栈清空。在这里setTimeout/setInterval/fetch函数的回调函数进入消息队列、promise/async await执行的异步函数的回调函数进入微任务队列等待执行。当执行栈清空后,微任务队列会先进入执行栈执行,然后消息队列任务进入执行栈执行,最后执行完毕清空执行栈。
在这里插入图片描述
js内存泄漏
不再用到的内存,没有及时释放就叫做内存泄漏
了解内存泄露就得先了解js垃圾回收机制,垃圾回收机制常用的方法是标记清除法,语言引擎有一张引用表保存了内存里面所有的堆数据、栈数据的值的引用次数,当这个资源的引用次数变为0时则表示这个值不再用到了,因此可以将这块儿内存释放。
如果某个资源已经不用了.但是引用次数却不为0,这种情况下垃圾回收机制无法释放这块内存,从而导致内存泄漏。
因此那些很占空间的内存,如果不再用到一定要检查是否还有地方在引用,如果是的话必须手动解除占用。即给变量赋值为null
经常引起内存泄漏的情况
1、闭包 2、setTimeOut,setInterval未清空,3、js改变DOM例如添加节点和元素

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值