nodejs 执行失败报错 “JavaScript heap out of memory“

报错信息很直观地指出是内存溢出了。是什么导致了内存溢出呢?其根本原因在于 nodejs 默认限制了最大可使用的内存大小。

nodejs V8 引擎在 64 位机器上默认限制使用内存最大不超过 1.7GB,超过这个限制官方建议尝试优化为多线程方式。

解决办法可以是增加 nodejs 可使用的最大内存大小,也可以从降低程序内存消耗的角度入手。

解决办法一: 设置 nodejs 配置项 配置项 max_old_space_size

如果希望超越 V8 引擎默认的内存大小限制,可以通过设置配置项 max_old_space_size 来解决。

  • 方法一:设置环境变量 NODE_OPTIONS

示例:
 

# windows
set NODE_OPTIONS=--max_old_space_size=4096
# mac/linux
export NODE_OPTIONS=--max_old_space_size=4096
  • 方法二:在运行命令中增加 --max_old_space_size=4096

例如可以修改 package.jsonscripts 脚本,示例如下:

{
  "scripts": {
    "serve": "node --max_old_space_size=8000 ./node_modules/@angular/cli/bin/ng serve",
    "prod": "node --max_old_space_size=8000 ./node_modules/@angular/cli/bin/ng build --prod",
  }
}

解决办法二:项目构建流程关闭 sourcemap 生成

以 Angular 为例,对于越来越庞大的 Angular 项目,Angular 编译时间、内存消耗也越来越长,其中 sourceMap 的生成占据了绝大部分的时间。

在开发过程中可以关闭 sourceMap 的生成,加快编译构建的速度。方法为在 angular.json 中设置 build.options.sourceMap 的值为 false,同时在 tsconfig.json 中设置 compilerOptions.sourceMap 的值为 false

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
elasticdump报错: FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 1: node::Abort() [node] 2: 0x8cd49c [node] 3: v8::Utils::ReportOOMFailure(char const*, bool) [node] 4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [node] 5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [node] 6: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqTwoByteString, unsigned short>(v8::internal::Handle<v8::internal::String>, int, int) [node] 7: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqTwoByteString, unsigned short>(v8::internal::Handle<v8::internal::String>, int, int) [node] 8: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 9: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 10: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 11: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 12: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 13: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 14: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 15: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 16: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 17: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 18: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::SlowScanJsonString<v8::internal::SeqOneByteString, unsigned char>(v8::internal::Handle<v8::internal::String>, int, int) [node] 19: v8::internal::Handle<v8::internal::String> v8::internal::JsonParser<false>::ScanJsonString<false>() [node] 20: v8::internal::JsonParser<false>::ParseJsonValue() [node] 21: v8::internal::JsonParser<false>::ParseJsonObject() [node] 22: v8::internal::JsonParser<false>::ParseJsonValue() [node] 23: v8::internal::JsonParser<false>::ParseJsonObject() [node] 24: v8::internal::JsonParser<false>::ParseJsonValue() [node] 25: v8::internal::JsonParser<false>::ParseJsonArray() [node] 26: v8::internal::JsonParser<false>::ParseJsonValue() [node] 27: v8::internal::JsonParser<false>::ParseJsonObject() [node] 28: v8::internal::JsonParser<false>::ParseJsonValue() [node] 29: v8::internal::JsonParser<false>::ParseJsonObject() [node] 30: v8::internal::JsonParser<false>::ParseJsonValue() [node] 31: v8::internal::JsonParser<false>::ParseJson() [node] 32: v8::internal::Builtin_JsonParse(int, v8::internal::Object**, v8::internal::Isolate*) [node] 33: 0x384a51e8697d 增加: export NODE_OPTIONS=--max_old_space_size=4096

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值