ค้นหาเว็บไซต์

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 ของคุณ มันจะใช้การแบ่งหน้า ดังนั้นอาจจะช้าขึ้นเล็กน้อย

ต่อเนื่อง :)