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

Rah*_*hul 12 javascript node.js npm angular

我正在使用 Angular 7.2。当我输入时ng serve,我面临以下问题:

致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足

这意味着什么?我该如何解决?

完整的错误信息是:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x8f9d10 node::Abort() [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
2: 0x8f9d5c  [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
3: 0xaffd0e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
4: 0xafff44 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
5: 0xef4152  [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
6: 0xef4258 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
7: 0xf00332 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
8: 0xf00c64 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
9: 0xf038d1 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
10: 0xeccd54 v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
11: 0x116cede v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress]
12: 0x19f62a4dbe1d
Aborted (core dumped) 
npm ERR! code ELIFECYCLE
npm ERR! errno 134
npm ERR! colo-ui@2.0.11 start: `ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress `
npm ERR! Exit status 134
npm ERR!
npm ERR! Failed at the colo-ui@2.0.11 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-01-29T07_09_21_844Z-debug.log
Run Code Online (Sandbox Code Playgroud)

小智 12

尝试使用此运行构建

node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve
Run Code Online (Sandbox Code Playgroud)

或其他方式是将其添加到 package.json

"build-serve": "node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve"
Run Code Online (Sandbox Code Playgroud)

其中 8048 是最大堆大小。


Jin*_*aji 10

问题:在构建(编译)时,内存超过为编译分配的内存。

修复:增加分配内存。8192是以下脚本中使用的大小。您可以根据需要更改此设置。

尝试运行这样的命令:

服务:

node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve
Run Code Online (Sandbox Code Playgroud)

建筑:

node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod
Run Code Online (Sandbox Code Playgroud)

自定义脚本:

您的脚本命令(如评论中所述):

ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress
Run Code Online (Sandbox Code Playgroud)

修改为:

node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve --aot --proxy-config proxy.conf.json --host 0.0.0.0 --disable-host-check --live-reload --progress
Run Code Online (Sandbox Code Playgroud)


mic*_*czy 7

如果您使用的是旧版本的 NodeJS,那么将 NodeJS 升级到 v12 有助于解决这个问题。

NodeJS v12 有不同的堆管理策略,请在此处查看更多信息。