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例如添加节点和元素
js的event loop/js内存泄漏
最新推荐文章于 2022-09-28 18:30:10 发布