読者です 読者をやめる 読者になる 読者になる

CircleCIでnodeのout of memoryが出た時

GitHub - angular/angular-cli: CLI tool for Angular を使用してAngularアプリケーションの開発をしている中で CircleCIでテストなどをパスしたらこのアプリケーションをサーバーにデプロイみたいなことをしている。

# AoTコンパイルを使用してビルドする
$ ./node_modules/@angular/cli/bin/ng build --progress=false --aot=true --prod

ただ最近アプリケーションが多くなってきてビルドする時間が長くなってきて下記のようなエラーが出るようになった

<--- Last few GCs --->

  504990 ms: Scavenge 1334.5 (1434.5) -> 1334.5 (1434.5) MB, 40.5 / 0 ms [allocation failure].
  505030 ms: Scavenge 1334.5 (1434.5) -> 1334.5 (1434.5) MB, 40.4 / 0 ms [allocation failure].
  505071 ms: Scavenge 1334.5 (1434.5) -> 1334.5 (1434.5) MB, 40.5 / 0 ms [allocation failure].
  505111 ms: Scavenge 1334.5 (1434.5) -> 1334.5 (1434.5) MB, 40.6 / 0 ms [allocation failure].
  505152 ms: Scavenge 1334.5 (1434.5) -> 1334.5 (1434.5) MB, 40.3 / 0 ms [allocation failure].


<--- JS stacktrace --->
Cannot get stack trace in GC.
FATAL ERROR: Scavenger: semi-space copy
 Allocation failed - process out of memory

Your build hit the 4G memory limit - CircleCI
CircleCIには4G制限があって上記ドキュメントにも書いてあるがJavaの場合は

machine:
  environment:
    _JAVA_OPTIONS: "-Xms512m -Xmx1024m"

のようなものを追加して4Gをこえないようにするとのこと
nodeではどうするかというと

$ node --max_old_space_size=3036 ./node_modules/@angular/cli/bin/ng build --progress=false --aot=true --prod

out of memoryはおこさなくはなった