JavaScript垃圾回收机制
v8引擎内存大小默认为 0.7G(32位) 和 1.4G(64位),当然在node中,这些默认值是可以修改的。
- 在什么时候开始触发垃圾回收机制?
- 垃圾回收机制会不会影响正常的代码执行?
- 垃圾回收的规则?
垃圾回收机制的触发,总是在内存将近快满的时候,并会暂停正常代码的执行,等待回收完毕后,继续执行后续代码;垃圾回收规则,全局变量不回收,局部变量失去引用回收(未释放的闭包不做回收)。
事件循环机制
任务队列又分为macro-task(宏任务)与micro-task(微任务),在最新标准中,它们被分别称为task与jobs。
macro-task大概包括:
script(整体代码)
setTimeout
setInterval
setImmediate
I/O
UI render
micro-task大概包括:
process.nextTick
Promise
Async/Await(实际就是promise)
MutationObserver(html5新特性)
GitHub
总的结论就是,执行宏任务,然后执行该宏任务产生的微任务,若微任务在执行过程中产生了新的微任务,则继续执行微任务,微任务执行完毕后,再回到宏任务中进行下一轮循环。