angular: Angular 2 AoT Heep Errors

AoT compilation resulting in " JavaScript heap out of memory" error

I am trying to compile my project by following the AoT guide available on angular.io

Below is my typesccript configuration file for aot

{
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "module": "es2015",
    "moduleResolution": "node",
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true,
    "noEmitOnError": true,
    "removeComments": true,
    "sourceMap": false,
    "target": "es5",
    "outDir": "../content/app/"
  },
  "angularCompilerOptions": {
    "genDir": "aot",
    "skipMetadataEmit": true
  },
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ]
}

I am compiling using below command:

D:\MyProject\node_modules\.bin>ngc -p ../../app/tsconfig-aot.json

It takes times in compilation and ends up with below errors:

<--- Last few GCs --->

  215225 ms: Mark-sweep 1327.9 (1434.3) -> 1316.1 (1434.3) MB, 1233.5 / 0.0 ms [allocation failure] [GC in old space requested].
  216639 ms: Mark-sweep 1316.1 (1434.3) -> 1316.1 (1434.3) MB, 1413.5 / 0.0 ms [allocation failure] [GC in old space requested].
  217985 ms: Mark-sweep 1316.1 (1434.3) -> 1320.4 (1403.3) MB, 1346.7 / 0.0 ms [last resort gc].
  219337 ms: Mark-sweep 1320.4 (1403.3) -> 1324.6 (1403.3) MB, 1351.5 / 0.0 ms [last resort gc].


<--- JS stacktrace --->

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

Security context: 00000023CEBCFB61 <JS Object>
    1: copyProperties [D:\MyProject\node_modules\typescript\lib\typescript.js:1462] [pc=000001870A3EC95C] (this=000000AAE12C6A41 <an Object with map 00000279F6259FA1>,source=000002E70921E389 <an Object with map 00000279F62D8539>,target=000002ED3C5C7691 <an Object with map 000000D6F40CD1C9>)
    2: objectTypeRelatedTo [D:\MyProject\node_modules\typescript\lib\typescript.js:...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

D:\MyProject\node_modules\.bin>

The project I am trying to compile has 467 files.

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Reactions: 1
  • Comments: 38 (17 by maintainers)

Most upvoted comments

So we need to do 2 things:

  • allow build tools to compile big applications as multiple compilation units (i.e. multiple invocations of ngc). We already do this internally at Google, and we need to find a way to make this work nicely externally as well
  • change ngc’s memory consumption to be independent of the project size

Even if it really was a bug, you still have to fill out the template which was presented to you while opening this issue (which you apparently just deleted).

Anyone found any solution to this? ngc runs fine for the first time when things are in JIT mode in main.ts, after first run, I change main,ts to AoT mode. Then ngc takes a while to compile and the process ends up out of memory.

I couldn’t find a solution anywhere Questions on StackOverflow are unanswered. I’ve tried compiling on both Windows and Mac and the process runs out of memory between 1400MB - 1460MB.

It’s been over a month for me and there is still no solution to this problem. Any help will be appreciated thanks…

I think closure compiler isn’t ready yet for Angular 2 see issue #8550 and this link Even if closure compiler works, still I would like ngc to do the entire job that it is supposed to do as it is demonstrated in the official tutorials. Angular 2 isn’t in beta or RC anymore, but we still can’t generate a production build out of it. Waiting for it for over a month and half now.

How about giving node more memory by setting --max_old_space_size ?

It seems that this bug ended up being the catch all place for all kinds of memory related issues. We fixed a whole bunch of them in v4 and then again just after v5.0 was released. Please help us sort these issues out by open new issues with reproductions if you still have memory related problems. Thank you.

how can I do that along with ngc? I’ve tried node --max-old-space-size=2048 ./node_modules/.bin/ngc -p tsconfig.json It doesn’t work