致命错误:接近堆限制的无效标记压缩分配失败 - 使用 fs 处理大文件时 JavaScript 堆内存不足
Posted
技术标签:
【中文标题】致命错误:接近堆限制的无效标记压缩分配失败 - 使用 fs 处理大文件时 JavaScript 堆内存不足【英文标题】:FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory when processing large files with fs 【发布时间】:2019-06-05 19:45:49 【问题描述】:我有一个 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);
);
);
);
【问题讨论】:
【参考方案1】:我终于找到了解决问题的方法!我需要启动将--max-old-space-size=8192
参数添加到节点进程的进程,如下所示:
node --max-old-space-size=8192 ./myScript.js
我处理了我的 1.3GB 没有问题!!
【讨论】:
【参考方案2】:您可以通过在运行 Snyk 之前运行以下命令来增加分配给该命令的内存量:
Linux/macOS
导出 NODE_OPTIONS=--max-old-space-size=8192 例如:
导出 NODE_OPTIONS=--max-old-space-size=8192 snyk测试 导出 NODE_OPTIONS=--max-old-space-size=8192 snyk监视器
Windows
从控制面板转到系统 -> 高级系统设置 -> 环境变量 -> 新建(用户或系统)
【讨论】:
嗨,您能解释一下snyk monitor
的用途吗?以上是关于致命错误:接近堆限制的无效标记压缩分配失败 - 使用 fs 处理大文件时 JavaScript 堆内存不足的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足 Angular 13 应用程序
致命错误:接近堆限制的无效标记压缩分配失败 - 使用 fs 处理大文件时 JavaScript 堆内存不足
致命错误:堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足 |反应
如何修复“致命错误:堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足”错误