Repository navigation
Build fails with JavaScript heap out of memory #12645
Description
Bug Report or Feature Request (mark with an x)
- [x] bug report -> please search issues before submitting
- [ ] feature request
Command (mark with an x)
- [ ] new
- [x] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc
Versions
npm 6.4.1
yarn 1.9.4
Angular CLI: 7.0.1
Node: 8.12.0
OS: darwin x64
Angular: 7.0.0
... animations, cdk, common, compiler, compiler-cli, core, forms
... http, language-service, material, material-moment-adapter
... platform-browser, platform-browser-dynamic, platform-server
... router, service-worker
Package Version
@angular-devkit/architect 0.10.1
@angular-devkit/build-angular 0.10.1
@angular-devkit/build-optimizer 0.10.1
@angular-devkit/build-webpack 0.10.1
@angular-devkit/core 7.0.1
@angular-devkit/schematics 7.0.1
@angular/cli 7.0.1
@angular/pwa 0.10.1
@ngtools/webpack 7.0.1
@schematics/angular 7.0.1
@schematics/update 0.10.1
rxjs 6.3.3
typescript 3.1.3
webpack 4.19.1
Repro steps
run ng build client --prod
The log given by the failure
92% chunk asset optimization TerserPlugin
<--- Last few GCs --->
[6911:0x102801e00] 224585 ms: Mark-sweep 1318.9 (1444.5) -> 1318.9 (1444.5) MB, 1195.0 / 0.0 ms allocation failure GC in old space requested
[6911:0x102801e00] 225921 ms: Mark-sweep 1318.9 (1444.5) -> 1318.9 (1429.5) MB, 1336.0 / 0.0 ms last resort GC in old space requested
[6911:0x102801e00] 227268 ms: Mark-sweep 1318.9 (1429.5) -> 1318.9 (1429.5) MB, 1347.5 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x130c21da5879 <JSObject>
1: /* anonymous */ [/node_modules/source-map/lib/source-node.js:~342] [pc=0xa501c16fd08](this=0x130cfc80c2f1 <JSGlobal Object>,chunk=0x130c584834b1 <String[1]: .>,original=0x130cc679e159 <Object map = 0x130cb6748611>)
2: SourceNode_walk [/node_modules/source-map/lib/source-node.js:~221] [pc=0xa501c57db1e](t...
FATAL ERROR: CALL_AND_RETRY_LAST 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::Factory::NewUninitializedFixedArray(int) [/usr/local/bin/node]
5: v8::internal::(anonymous namespace)::ElementsAccessorBase<v8::internal::(anonymous namespace)::FastPackedObjectElementsAccessor, v8::internal::(anonymous namespace)::ElementsKindTraits<(v8::internal::ElementsKind)2> >::GrowCapacity(v8::internal::Handle<v8::internal::JSObject>, unsigned int) [/usr/local/bin/node]
6: v8::internal::Runtime_GrowArrayElements(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/local/bin/node]
7: 0xa501a5042fd
error Command failed with signal "SIGABRT".
Desired functionality
v6 doesn't have any issue building the same app.
Mention any other details that might be useful
I can't shared any code as it's a big client project, and I suspect it the size that's causing the issue as basic apps build ok.
Activity
filipesilva commentedon Oct 19, 2018
I think the difference between v6 and v7 is the bug reported in #12646 as in that issue production builds are taking longer, which usually indicated that more code is being processed and more memory is needed.
The general issue for running out of memory is #5618. As projects grow bigger, they use more memory, and might need to increase the default memory limit. There's more information on this in #5618 (comment).
In your case the only thing you did was to update from v6 to v7 and it should not need significantly more memory than before. I'll look at that problem in #12646.
dottodot commentedon Oct 19, 2018
allows build to complete, just need to know why my bundle has increase by 260kb
joachim-bl commentedon Oct 23, 2018
The same exact behaviour here. And the same solution worked...thank you dottodot!
kartik1195 commentedon Mar 27, 2019
try to modify the files and replace their contents with the following: (in the folder : node_modules\bin)
Modify ng.cmd:
Modify ngc.cmd :
Dev-Pawar commentedon Apr 12, 2019
My team was facing the same issue and this is how we resolved.
While building a project just use this command instead of
ng build client --prodnode --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizerbharat-banavalikar commentedon Apr 24, 2019
increase maximum memory allocated in angular.json
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "11mb"
}
]
ramsunvtech commentedon Aug 13, 2019
I've faced this same problem recently and came across to this thread but my problem was with
ReactApp. Below changes in the node start / build command solved my issues.Syntax
Example
Why size is 16000 in max-old-space-size?
Basically, it varies depends on the allocated memory to that thread as per your node settings.
How to verify and give right size?
This is basically stay in our engine
v8. below code helps you to understand the Heap Size of your local node v8 engine.quincarter commentedon Aug 30, 2019
I am facing a similar issue on our app as well.
Angular 8.1.2
janstadt commentedon Sep 5, 2019
Does anyone know if this is due to having just one gigantic module for an application? Our team ran into this issue and we have just 1 app module with 30+ routes and many components and i was curious if breaking the application down into smaller modules would help avoid the out of memory issue during source mapping?
clydin commentedon Sep 5, 2019
Sourcemap processing is unfortunately highly memory intensive. Breaking a very large output bundle into smaller ones via lazy routes may not completely alleviate the issue but should definitely help mitigate it. It may also provide a benefit to end users of the application as well since less code needs to be downloaded and executed prior to first interaction.
janstadt commentedon Sep 5, 2019
Thanks @clydin. Im aware of the benefits and we plan to do it but was more curious if have still seen this with many modules as well? I presume each chunked module would get sourcemapped separately right?
renyuns commentedon Sep 10, 2019
i have the save problem
Angular CLI 8.1.0
Node 10.16.3
NPM 6.9.0
demisx commentedon Sep 25, 2019
Same issue here too:
The error:
zhangwk02 commentedon Sep 26, 2019
This is why?
denysvitali commentedon Sep 26, 2019
Why is this issue closed?
demisx commentedon Sep 30, 2019
The error went away after upgrading to node
v12.10.0. Finally.kbpontius commentedon Oct 1, 2019
Just upgraded to node
v12.10.0and it didn't go away for us, unfortunately.zhangwk02 commentedon Oct 2, 2019
dahovey commentedon Oct 15, 2019
I ran into this problem building an Angular project within a Docker container. I made sure to use current version of node (12.12), and I had to increase the RAM available to docker.
orgads commentedon Oct 31, 2019
Here too. Working with Docker with 2GB RAM. It worked fine with node 10, but reaches the memory limit with node 12.
chenwenshu commentedon Nov 4, 2019
Had to deal with an ancient Jenkins server, so upgrading node wasn't really an option. Downgrading angular cli to 8.2.2 worked in this case. I suspect the out of memory error was caused by a change introduced in angular 8.3.x. The parallel bundle processing during
ng build --prodbuilds for both es2015 and es5 at the same time, thus the memory shortage.Improve performance of parallel bundle processing [8.3.x]
Differential builds
orgads commentedon Nov 4, 2019
In my case I'm using angular cli 7.3.9.
angular-automatic-lock-bot commentedon Dec 5, 2019
This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
This action has been performed automatically by a bot.