javascript - fatal error : Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory when processing large files with fs

标签 javascript node.js heap-memory fs large-files

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

fatal error :堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足

我尝试将 #!/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);
            });
        });
    }
});

最佳答案

我终于找到了解决问题的方法!我需要启动将 --max-old-space-size=8192 参数添加到 Node 进程的进程,如下所示:

node --max-old-space-size=8192 ./myScript.js

我毫无问题地处理了我的 1.3GB !!

关于javascript - fatal error : Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory when processing large files with fs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54137165/

相关文章:

javascript - 如何在 Express 路由器中使用 body-parser?

javascript - 获取相对于浏览器窗口的位置

node.js - 无法使用 bash 脚本中的 nvm

c - Malloc() 为指向 int 数组的指针分配空间的正确方法

Java 堆空间和 RAM

javascript - 将变量从内部函数分配到外部作用域

javascript - Node : Confusing behaviour related to saving a TypeORM model using await inside a callback/promises clearing

node.js - Nodejs Redis HSET & HGET 插入到数据集错误

javascript - javascript中如何执行同步性

在 C 中导致段错误 |堆栈虚拟内存