为什么空node.js脚本会消耗越来越多的RAM?

为什么空node.js脚本会消耗越来越多的RAM?,node.js,memory-leaks,Node.js,Memory Leaks,运行此: setInterval(function() { console.log(process.memoryUsage()); }, 1000); 显示内存使用量不断增长: { rss: 9076736, heapTotal: 6131200, heapUsed: 2052352 } ... some time later { rss: 10960896, heapTotal: 6131200, heapUsed: 2939096 } ... some time later { r

运行此:

setInterval(function() {
    console.log(process.memoryUsage());
}, 1000);
显示内存使用量不断增长:

{ rss: 9076736, heapTotal: 6131200, heapUsed: 2052352 }
... some time later
{ rss: 10960896, heapTotal: 6131200, heapUsed: 2939096 }
... some time later
{ rss: 11177984, heapTotal: 6131200, heapUsed: 3141576 }
为什么会发生这种情况?

程序不是空的,它正在运行计时器,检查内存使用情况,并每秒向控制台写入一次。这将导致在堆中创建对象,直到垃圾回收运行为止,堆使用率将不断增加


如果您放弃它,您最终会看到每次触发垃圾收集时都会返回
heapUsed

我在每个循环中添加了
global.gc()
,并使用
--无空闲通知--暴露gc
启动节点,但没有解决问题。为什么会这样?@Fluffy我刚刚试过了,做了那个改变后,
heapUsed
基本上是平坦的。v8也做了很多工作,试图优化/重新编译你的代码和节点的代码,但正如@JohnnyHK所说,它最终会平坦,或者围绕一条大致平坦的线振荡。