【问题标题】:Why does an empty node.js script consume more and more RAM?为什么一个空的 node.js 脚本会消耗越来越多的 RAM?
【发布时间】:2013-03-01 16:27:40
【问题描述】:

运行这个:

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 }

为什么会这样?

【问题讨论】:

    标签: node.js memory-leaks


    【解决方案1】:

    该程序不是空的,它正在运行一个计时器,检查内存使用情况,并每秒写入一次控制台。这会导致在堆中创建对象,并且在垃圾收集运行之前,您的堆使用量将不断增加。

    如果您放手,您最终应该会看到 heapUsed 在每次触发垃圾回收时返回。

    【讨论】:

    • 我在每个循环中添加了global.gc() 并使用--nouse-idle-notification --expose-gc 启动了节点 - 没有解决问题。这是为什么呢?
    • @Fluffy 我刚刚尝试过,做出改变确实使heapUsed 基本保持不变。
    • v8 也在做很多工作来尝试优化/重新编译您的代码和节点的代码,但正如@JohnnyHK 所说,它最终会变平,或围绕一条基本平坦的线振荡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    相关资源
    最近更新 更多