node.js - ข้อผิดพลาดร้ายแรง: การทำเครื่องหมาย-บีบอัดไม่สำเร็จใกล้ขีดจำกัดฮีป การจัดสรรล้มเหลว - หน่วยความจำฮีปของ JavaScript หมด | reactjs
ฉันไม่มีโปรเจคที่ยาก ฉันเพิ่งเริ่มมัน แต่เมื่อฉันใช้ 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! [email dev: `next dev`
npm ERR! Exit status 134
npm ERR!
npm ERR! Failed at the [email 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 และคุณสามารถใส่ตัวเลขอะไรก็ได้ที่คุณต้องการ ถ้าคุณใส่มากกว่า RAM ของคุณ มันจะใช้การแบ่งหน้า ดังนั้นอาจจะช้าขึ้นเล็กน้อย
ต่อเนื่อง :)
