我试图写一点JS读取文件并将其写入流。这笔交易是文件非常大,所以我必须一点一点地阅读它。似乎我不应该用尽内存,但我确实是这样。下面的代码:Node.js内存耗尽大文件读取
var size = fs.statSync("tmpfile.tmp").size;
var fp = fs.openSync("tmpfile.tmp", "r");
for(var pos = 0; pos < size; pos += 50000){
var buf = new Buffer(50000),
len = fs.readSync(fp, buf, 0, 50000, (function(){
console.log(pos);
return pos;
})());
data_output.write(buf.toString("utf8", 0, len));
delete buf;
}
data_output.end();
出于某种原因,它击中264900000,然后抛出FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory
。我认为data_output.write()
调用会迫使它将数据写入data_output
,然后将其从内存中丢弃,但我可能是错的。有些东西导致数据留在内存中,我不知道它会是什么。任何帮助将不胜感激。
'删除BUF;'无效,尝试'BUF = null' – Raynos