【问题标题】:node memory timeout heapused increasing节点内存超时 heapused 增加
【发布时间】:2018-03-29 13:36:14
【问题描述】:

我一直在尝试编写一个代码,我可以看到在设置超时和下次删除时不应增加 heapused。但不管 heapUsed 在不断增加。

var process = require('process');
var initial = process.memoryUsage();
console.log("initial",initial.heapUsed);
var x;
function Happen() {
var prop = process.memoryUsage();
console.log("process",prop.heapUsed);

if(x)
    clearTimeout(x);

x = setTimeout(function() {
    Happen();
}, 500);
}
Happen();

【问题讨论】:

  • 如果你在Happen(),超时已经被调用,不需要clearTimeout(x)
  • 清除超时是释放之前创建的setTimeout,因为setTimeout总是被认为是全局变量

标签: javascript node.js memory-leaks settimeout


【解决方案1】:

使用 setImmediate 清除上下文,当您在超时时发生回调:

x = setTimeout(function() {
    setImmediate(Happen);
}, 500);

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 2018-09-21
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 2022-12-07
    相关资源
    最近更新 更多