Skip to content

ionic build prod very slow and eventually fails with Javascript heap out of memoryΒ #14617

@ericmulcahy

Description

@ericmulcahy

Bug Report

Ionic Info

cli packages: (/usr/local/lib/node_modules)

    @ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : 8.0.0 

local packages:

    @ionic/app-scripts : 3.1.8
    Cordova Platforms  : android 7.0.0 browser 5.0.3
    Ionic Framework    : ionic-angular 3.9.2

System:

    Node  : v8.11.2
    npm   : 5.6.0 
    OS    : macOS High Sierra
    Xcode : Xcode 9.3 Build version 9E145 

Environment Variables:

    ANDROID_HOME : not set

Misc:

    backend : pro

Describe the Bug
Running "ionic build --prod" runs for about 90 minutes then fails with the following output. This command had been working for me for a few months with total build times around 2-3 minutes. Something changed in the last 2 weeks. I have not changed any project dependencies, but I have added a few pages and providers since then. However I cannot pinpoint what caused this to change so dramatically. My project has 17 pages and 8 providers so not a crazy number of files.

Running app-scripts build: --prod
[12:41:05]  build prod started ... 
[12:41:05]  clean started ... 
[12:41:05]  clean finished in 4 ms 
[12:41:05]  copy started ... 
[12:41:05]  deeplinks started ... 
[12:41:05]  deeplinks finished in 154 ms 
[12:41:05]  ngc started ... 
[12:41:18]  ngc finished in 13.11 s 
[12:41:18]  preprocess started ... 
[12:41:18]  preprocess finished in less than 1 ms 
[12:41:18]  webpack started ... 
[12:41:19]  copy finished in 13.69 s 

<--- Last few GCs --->
ed[52157:0x102801e00]  6458092 ms: Mark-sweep 6726.9 (6882.0) -> 6727.6 (6883.5) MB, 4543.3 / 0.0 ms  (+ 983.9 ms in 231 steps since start of marking, biggest step 13.4 ms, walltime since start of marking 5598 ms) allocation failure scavenge might not succe[52157:0x102801e00]  6463423 ms: Mark-sweep 6728.1 (6883.5) -> 6727.4 (6898.0) MB, 5282.8 / 0.0 ms  (+ 42.3 ms in 9 steps since start of marking, biggest step 12.6 ms, walltime since start of marking 5328 ms) allocation failure scavenge might not succeed


<--- JS stacktrace --->
Cannot get stack trace in GC.
FATAL ERROR: MarkCompactCollector: semi-space copy, fallback in old gen Allocation failed - JavaScript heap out of memory
 1: node::Abort() [/usr/local/bin/node]
 2: node::FatalException(v8::Isolate*, v8::Local<v8::Value>, v8::Local<v8::Message>) [/usr/local/bin/node]
 3: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/local/bin/node]
 4: v8::internal::EvacuateNewSpaceVisitor::AllocateTargetObject(v8::internal::HeapObject*, int, v8::internal::HeapObject**) [/usr/local/bin/node]
 5: v8::internal::EvacuateNewSpaceVisitor::Visit(v8::internal::HeapObject*, int) [/usr/local/bin/node]
 6: void v8::internal::LiveObjectVisitor::VisitBlackObjectsNoFail<v8::internal::EvacuateNewSpaceVisitor, v8::internal::MajorNonAtomicMarkingState>(v8::internal::MemoryChunk*, v8::internal::MajorNonAtomicMarkingState*, v8::internal::EvacuateNewSpaceVisitor*, v8::internal::LiveObjectVisitor::IterationMode) [/usr/local/bin/node]
 7: v8::internal::Evacuator::EvacuatePage(v8::internal::Page*) [/usr/local/bin/node]
 8: v8::internal::PageEvacuationTask::RunInParallel() [/usr/local/bin/node]
 9: v8::internal::ItemParallelJob::Task::RunInternal() [/usr/local/bin/node]
10: v8::internal::ItemParallelJob::Run() [/usr/local/bin/node]
11: void v8::internal::MarkCompactCollectorBase::CreateAndExecuteEvacuationTasks<v8::internal::FullEvacuator, v8::internal::MarkCompactCollector>(v8::internal::MarkCompactCollector*, v8::internal::ItemParallelJob*, v8::internal::RecordMigratedSlotVisitor*, v8::internal::MigrationObserver*, long) [/usr/local/bin/node]
12: v8::internal::MarkCompactCollector::EvacuatePagesInParallel() [/usr/local/bin/node]
13: v8::internal::MarkCompactCollector::Evacuate() [/usr/local/bin/node]
14: v8::internal::MarkCompactCollector::CollectGarbage() [/usr/local/bin/node]
15: v8::internal::Heap::MarkCompact() [/usr/local/bin/node]
16: v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [/usr/local/bin/node]
17: v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/usr/local/bin/node]
18: v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/usr/local/bin/node]
19: v8::internal::Runtime_AllocateInNewSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
20: 0x1bdf00f842fd
Abort trap: 6

Steps to Reproduce
Run "ionic build --prod" and wait 90 minutes. Unfortunately I am unable to provide my source code.

Related Code
N/A

Expected Behavior
I expect the production build to finish in a reasonable number of minutes without errors.

Additional Context
N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions