Javascript 使用NodeJS流时如何减少内存使用?(zlib,csv)
这可能是一个新手问题,但我很难弄清楚如何在NodeJS中处理流时减少内存使用。我的代码运行良好,但应用程序在我们的Heroku dyno(爱好计划)上崩溃,因为脚本总共使用了约580MB 这就是我想要实现的目标: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
- 从压缩的csv文件中获取数据(约50000行,25列)
- 处理数据并将其存储到MongoDB
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上运行
提前谢谢