从nodejs执行长轮询(可能的内存泄漏)

时间:2013-12-27 18:00:44

标签: facebook node.js

我写了一段代码,要对Facebook发出请求。

现在我把这段代码包装成一个无限循环,它将使用超时每隔10秒发送一次这些请求。

代码:

var poll = function(socket, userProvider) {    
    var lastCallTime = new Date();
    var polling = true;

    // The stream itself, non blocking
    function performPoll() {
        var results = feed(function (err, data) {
            lastCallTime = new Date();

            // PROCESS DATA

            // Check new posts
            if (polling) {
                setTimeout(performPoll, 1000 * 10);
            }
        });  
    };

    // Start infinite loop
    performPoll();
};

feed(cb)只是要求向Facebook请求数据的请求,这100%工作并做我想要它做的事情,我现在唯一的问题是这段代码保持增加我的内存使用量。几分钟后,它已经增加了50MB(从50 - > 100)。

有没有人可以帮我确定原因?

1 个答案:

答案 0 :(得分:0)

v8不会立即收集内存。如果稳定在100mb,则可以预期。有关详情,请查看nodejs setTimeout memory leak?

如果你真的想要清除内存,请使用global.gc()。阅读this blog有关如何手动调用垃圾收集器的信息。