build engine js heap out 内存溢出

之前内存溢出之后 扩大到 8096M

下面是报错信息:

(node:11751) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.

<— Last few GCs —>

[11751:0x105000000] 137564 ms: Mark-sweep 1366.7 (1455.8) -> 1365.6 (1455.8) MB, 1100.5 / 0.0 ms (average mu = 0.090, current mu = 0.005) allocation failure GC in old space requested
[11751:0x105000000] 138632 ms: Mark-sweep 1365.6 (1455.8) -> 1365.6 (1455.8) MB, 1067.8 / 0.0 ms (average mu = 0.046, current mu = 0.000) allocation failure GC in old space requested

<— JS stacktrace —>

==== JS stack trace =========================================

0: ExitFrame [pc: 0x3d89531cfb7d]

Security context: 0x388dd749d969
1: visit(aka visit) [0x388dd85bc201] [/Applications/CocosCreator2.0.9.app/Contents/Resources/engine/node_modules/estree-walker/dist/estree-walker.umd.js:~27] [pc=0x3d8954a04c7a](this=0x388d315025b1 ,0x388dce350049 ,0x388d5bf990c9 ,0x388d2041acf9 <JSFunction enter (sfi = 0x388da4671d81)>,0x3…

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x10003a5ab node::Abort() [/usr/local/bin/node]
2: 0x10003a77c node::FatalTryCatch::~FatalTryCatch() [/usr/local/bin/node]
3: 0x10016f24b v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
4: 0x10016f1ec v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [/usr/local/bin/node]
5: 0x100431df8 v8::internal::Heap::UpdateSurvivalStatistics(int) [/usr/local/bin/node]
6: 0x100433815 v8::internal::Heap::CheckIneffectiveMarkCompact(unsigned long, double) [/usr/local/bin/node]
7: 0x100431169 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
8: 0x10042ff11 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
9: 0x1004301ad v8::internal::Heap::CollectAllAvailableGarbage(v8::internal::GarbageCollectionReason) [/usr/local/bin/node]
10: 0x100437ee1 v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationSpace, v8::internal::AllocationAlignment) [/usr/local/bin/node]
11: 0x100417c2b v8::internal::factory::AllocateRawArray(int, v8::internal::PretenureFlag) [/usr/local/bin/node]
12: 0x100417ae1 v8::internal::factory::NewFixedArrayWithFiller(v8::internal::Heap::RootListIndex, int, v8::internal::Object*, v8::internal::PretenureFlag) [/usr/local/bin/node]
13: 0x10026d5d4 v8::internal::compiler::CodeGenerator::GenerateDeoptimizationData() [/usr/local/bin/node]
14: 0x10026d484 v8::internal::compiler::CodeGenerator::FinalizeCode() [/usr/local/bin/node]
15: 0x10032ef2d void v8::internal::compiler::PipelineImpl::Runv8::internal::compiler::FinalizeCodePhase() [/usr/local/bin/node]
16: 0x100329cb9 v8::internal::compiler::PipelineImpl::FinalizeCode() [/usr/local/bin/node]
17: 0x100329bf2 v8::internal::compiler::PipelineCompilationJob::FinalizeJobImpl(v8::internal::Isolate*) [/usr/local/bin/node]
18: 0x100247c85 v8::internal::OptimizedCompilationJob::FinalizeJob(v8::internal::Isolate*) [/usr/local/bin/node]
19: 0x10024ba7f v8::internal::Compiler::FinalizeCompilationJob(v8::internal::OptimizedCompilationJob*, v8::internal::Isolate*) [/usr/local/bin/node]
20: 0x10024593a v8::internal::OptimizingCompileDispatcher::InstallOptimizedFunctions() [/usr/local/bin/node]
21: 0x1003fe465 v8::internal::StackGuard::HandleInterrupts() [/usr/local/bin/node]
22: 0x1005f812a v8::internal::Runtime_StackGuard(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
23: 0x3d89531cfb7d
24: 0x3d8954a04c7a
25: 0x3d8954a04787
[1] 11751 abort gulp build

我在Mac上也遇到这个问题。

gulp build 后面添加 --max_old_space_size=2000的参数,解决了。

2赞