我不知道这是否是 Node 或 V8 的错误,但如果我运行以下代码,节点进程会泄漏内存。 GC 似乎从未启动,并且在几秒钟内它就消耗了 >1GB 的内存。这是意想不到的行为。我错过了什么吗?
这是代码:
for(;;) { console.log(1+1); }
显然,这有点人为的情况,但我可以看到长期运行的进程永远不会释放内存的问题。
编辑:我尝试了 v0.5.10(不稳定)和 v0.4.12(稳定),不稳定版本的表现稍好一些——稳定版本只是停止输出到控制台,但继续消耗内存,而稳定版本继续执行并消耗内存而不会暂停。
您通过从不返回来阻止 node.js 事件循环。
当您向流写入内容时,node.js 会异步执行此操作:它发送写入请求,在流的内部数据结构中对有关已发送请求的信息进行排队,并等待通知其完成的回调。
如果您阻止事件循环,则永远不会调用回调(因为永远不会处理传入事件)并且流中排队的辅助数据结构永远不会被释放。
如果您通过不断地使用 nextTick/setInterval/setTimeout 调度自己的事件来“超载”事件循环,则可能会发生同样的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)