严重错误:无效的标记压缩接近堆限制分配失败-使用fs处理大型文件时,JavaScript堆内存不足

538*_*MEO 4 javascript heap-memory large-files fs node.js

我有一个nodeJs脚本,可以处理一堆大的.csv文件(全部为1.3GB)。它运行了片刻并抛出此错误:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

我试图将#!/usr/bin/env node --max-old-space-size=4096文件放在开头,但这并不能解决我的问题...

试图谷歌,但几乎没有有关我的问题的相关信息。

不需要文件内容后是否可以刷新内存?我是否需要为nodeJs分配更多的内存?

谢谢 ;)

这是我的代码示例:

fs.readdir(dirName, function(err, filenames) {
    if (err) console.error(err);
    else {
        filenames.forEach(function(filename) {
            fs.readFile(dirName + filename, 'utf-8', function(err, content) {
                if (err) console.error(err);
                else processFile(content);
            });
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

538*_*MEO 7

我终于找到了解决问题的办法!我需要启动将--max-old-space-size=8192参数添加到节点过程的过程:

node --max-old-space-size=8192 ./myScript.js
Run Code Online (Sandbox Code Playgroud)

我处理了我的1.3GB没有问题!