专栏名称: 程序员成长指北
专注 Node.js 技术栈分享,从 前端 到 Node.js 再到 后端数据库,祝您成为优秀的高级 Node.js 全栈工程师。一个有趣的且乐于分享的人。座右铭:今天未完成的,明天更不会完成。
今天看啥  ›  专栏  ›  程序员成长指北

Node.js setTimeout 引起的内存泄露问题

程序员成长指北  · 公众号  ·  · 2025-01-09 10:21
    

文章预览

点击上方  程序员成长指北 ,关注公众号 回复 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 永远不会被释放,当然这个例子很直接,大家并不会写出这样的代码,但是有时候代码复杂的时候,就不好说了,比如之前帮助业务排查问题的时候经 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览