致命错误:堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足 |反应
Posted
技术标签:
【中文标题】致命错误:堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足 |反应【英文标题】:FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory | reactjs 【发布时间】:2021-11-08 06:27:22 【问题描述】:我没有艰巨的项目,我只是开始它。但是当我使用npm run dev
node js 吃了超过 4GB 的内存之后,我看到了致命错误:
--- Last few GCs --->
[16804:0000018EB02350F0] 128835 ms: Mark-sweep (reduce) 4092.4 (4101.2) -> 4091.5 (4102.4) MB, 2886.3 / 0.0 ms (average mu = 0.106, current mu = 0.002) allocation failure scavenge might not succeed
[16804:0000018EB02350F0] 133745 ms: Mark-sweep (reduce) 4092.7 (4104.7) -> 4091.8 (4104.9) MB, 4899.7 / 0.0 ms (average mu = 0.042, current mu = 0.002) allocation failure scavenge might not succeed
<--- JS stacktrace --->
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - javascript heap out of memory
1: 00007FF7D7A94BDF napi_wrap+111007
2: 00007FF7D7A38166 v8::base::CPU::has_sse+59910
3: 00007FF7D7A39066 node::OnFatalError+294
4: 00007FF7D831217E v8::Isolate::ReportExternalAllocationLimitReached+94
5: 00007FF7D82F6F4D v8::SharedArrayBuffer::Externalize+781
6: 00007FF7D81A008C v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1516
7: 00007FF7D81AB4AA v8::internal::Heap::ProtectUnprotectedMemoryChunks+1258
8: 00007FF7D81A85E9 v8::internal::Heap::PageFlagsAreConsistent+2457
9: 00007FF7D819D181 v8::internal::Heap::CollectGarbage+2049
10: 00007FF7D819B385 v8::internal::Heap::AllocateExternalBackingStore+1349
11: 00007FF7D81BB7FB v8::internal::Factory::NewFillerObject+203
12: 00007FF7D7EEA2D1 v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator=+1409
13: 00007FF7D839B03D v8::internal::SetupIsolateDelegate::SetupHeap+465325
14: 0000019D8C81DCE3
npm ERR! code ELIFECYCLE
npm ERR! errno 134
npm ERR! top-app@0.1.0 dev: `next dev`
npm ERR! Exit status 134
npm ERR!
npm ERR! Failed at the top-app@0.1.0 dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
我使用相当默认的 package.json:
"scripts":
"dev": "next dev",
"debug": "set NODE_OPTIONS=--inspect && next dev",
"build": "next build",
"start": "next start",
"lint": "next lint",
"stylelint": "stylelint \"**/*.css\" --fix"
,
如果你还需要其他我会添加这个
【问题讨论】:
【参考方案1】:你需要给节点更多的内存。
可以在控制台中手动增加max_old_space_size 的快速解决方法。从那一刻起,所有的构建都会顺利进行。你可以启动这个命令:
SET NODE_OPTIONS=--max_old_space_size=8048
如果您想要一个更稳定的解决方案,您应该更改 dev
命令的定义,如下所示:
SET NODE_OPTIONS=--max_old_space_size=8048 && next dev
这样您就可以确保 max_old_space_size
始终设置为比默认值更高的数字,而不会做任何与以前不同的事情。
8048
是以字节为单位的大小,所以 8GB,你可以放任何你想要的数字。如果你放的内存多于你的内存,它会进行分页,所以它可能会慢一些。
无缝:)
【讨论】:
好的,谢谢。这只是组件中的递归以上是关于致命错误:堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足 |反应的主要内容,如果未能解决你的问题,请参考以下文章
Nuxt 生成致命错误:在堆限制附近的无效标记压缩分配失败 - JavaScript 堆内存不足
致命错误:接近堆限制的无效标记压缩分配失败 - Ionic 3 中的 JavaScript 堆内存不足
Angular 7 致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足
致命错误:接近堆限制的无效标记压缩分配失败 - JavaScript 堆内存不足 Angular 13 应用程序