内存泄露,各位看客老爷帮忙看看是哪里出错了,内存不断的涨!就跟前段时间股票似得:(
发布于 9小时前 作者 chiedey 83 次浏览 来自 问答

var request = require(‘superagent’); var async = require(‘async’);

var tasks = [ 'http://www.baidu.com’, 'http://www.baidu.com’, 'http://www.baidu.com’, 'http://www.baidu.com’, 'http://www.baidu.com’, 'http://www.baidu.com’, ];

setInterval(function() { async.map(tasks, function(task, callback) { request .get(task) .end(function(err, res) { callback(err, res); }); }, function(err, res) { }) }, 1000); Screenshot from 2015-07-05 18:20:22.png

4 回复

你用async.mapLimit控制下并发试试。 我之前写个简单的跟你这有点类似的东西 https://github.com/luoyjx/tag-spider

@luoyjx 试过,好像不管用

正常, Node.js 就这样,GC触发的比较慢。 如果实在看不下去了可以在启动的时候加上v8参数 --expose-gc, 然后在程序里自己手动 gc

setInterval(function() {
    async.map(tasks, function(task, callback) {
        request
            .get(task)
            .end(function(err, res) {
                callback(err, res);
            });
    }, function(err, res) {
        gc();
        console.log(process.memoryUsage());
    })
}, 1000);
  • 涨没有事,关键是你程序跑完后多长时间内存是否还是占用,这才是确定是否是内存泄露。 如果程序跑完一分钟内,内存下去了。就不是内存问题
  • 楼主这样的程序,在执行的时候肯定内存一直在攀升。关键是你如何控制在你想控制的范围内, 因为请求到的东西一直存在内存里。处理完后等待GC
回到顶部