文章预览
点击上方 程序员成长指北 ,关注公众号 回复 1 ,加入高级Node交流群 分享一下避免大家踩坑。 定时器回调通常会通过闭包持有外部的对象,比如下面的例子。 function demo () { const dummy = {} setTimeout (() => { dummy ; }, 10000 ) } demo (); demo 执行完后,demo 函数里的 dummy 对象是不会释放的,因为它还被 setTimeout 引用着,如果执行很多次 demo 的话,就会导致大量的内存无法被释放,直到执行完 setTimeout,这通常不是什么问题,除非 dummy 对象非常大。 但是如果是 setInterval 的话,情况就不一样了。 function demo () { const dummy = {} setInterval (() => { dummy ; }, 10000 ) } demo (); 上面的代码会导致 dummy 永远不会被释放,当然这个例子很直接,大家并不会写出这样的代码,但是有时候代码复杂的时候,就不好说了,比如之前帮助业务排查问题的时候经
………………………………