Javascript 使用NodeJS流时如何减少内存使用?(zlib,csv)

Javascript 使用NodeJS流时如何减少内存使用?(zlib,csv),javascript,node.js,stream,zlib,Javascript,Node.js,Stream,Zlib,这可能是一个新手问题,但我很难弄清楚如何在NodeJS中处理流时减少内存使用。我的代码运行良好,但应用程序在我们的Heroku dyno(爱好计划)上崩溃,因为脚本总共使用了约580MB 这就是我想要实现的目标: 从压缩的csv文件中获取数据(约50000行,25列) 处理数据并将其存储到MongoDB 以下下载数据并将其存储在阵列中的代码需要约390MB的空间,如果有人能帮我减少,那就太好了。在过去的几天里,我做了很多研究,但我找不到解决问题的好办法。这是我的密码: let httpOpt

这可能是一个新手问题,但我很难弄清楚如何在NodeJS中处理流时减少内存使用。我的代码运行良好,但应用程序在我们的Heroku dyno(爱好计划)上崩溃,因为脚本总共使用了约580MB

这就是我想要实现的目标:

  • 从压缩的csv文件中获取数据(约50000行,25列)
  • 处理数据并将其存储到MongoDB
以下下载数据并将其存储在阵列中的代码需要约390MB的空间,如果有人能帮我减少,那就太好了。在过去的几天里,我做了很多研究,但我找不到解决问题的好办法。这是我的密码:

let httpOptions = {
    headers: {
        'accept-encoding': 'gzip,deflate'
    }
};

function getGzipped(url, callback) {
    var gunzip = zlib.createGunzip();
    var buffer = [];
    https.get(url, httpOptions, function (response) {
        response.pipe(gunzip);
    });

    gunzip.on('data', function (data) {
        buffer.push(data.toString());

    }).on("end", function () {
        callback(null, buffer.join(""));

    }).on("error", function (e) {
        callback(e);
    })
}


getGzipped(url, function (err, data) {
    if (err) throw (err);

    arr = csv.parse(data);

    console.log(arr);
    const used = process.memoryUsage().heapUsed / 1024 / 1024;
    console.log(`The script uses approximately ${Math.round(used * 100) / 100} MB`);
    return;
    ....
}
这种类型的内存使用正常吗?有没有一个简单的解决方案来减少它,这样我的脚本就可以在Heroku上运行

提前谢谢