ng build時に javascript heap out of memory が発生した場合の対処法

こんにちは!kossyです!



さて、今回はAngularでng build を行った際に、
javascript heap out of memory」エラーが発生し、
buildが通らない場合の対処法について、
ブログに残してみたいと思います。



環境
Angular CLI: 9.1.7
Node: 12.13.1
typescript 3.8.3
webpack 4.43.0



発生する原因

Javascriptのヒープメモリが逼迫した時に発生してしまうようです。

ではヒープメモリとは何でしょうか。


『ヒープ領域』は、アプリケーションやOSで動的に割り当てたり解放するものなんだ。プログラムで一時的に必要になるメモリで、例えばファイルを読み出すときに読みだしたファイル内容を置いておいたり、ネットワークでデータを送受信する時にデータを置いておく時に使うよ。

必要な時に動的に確保し、使い終わったら解放することで、限られたメモリを有効に使うことができるね。malloc()という関数でメモリを割り当て、free()という関数で解放するのが標準的な方法なんだ。

出典: https://www.uquest.co.jp/embedded/learning/lecture16.html

なるほど、ヒープメモリはヒープ領域とも言うんですね。
プログラム内で一時的に必要になるメモリの上限を突破してしまったということでしょう。
なので、メモリの上限を上げてあげればなんとかなりそうです。

ng buildの前にオプションを渡す

javascript heap out of memory エラーが発生してbuildに失敗した場合は、

$ NODE_OPTIONS="--max-old-space-size=1024" ng build

space-sizeは2048, 4096 のように よしなに設定してもらえればOKです。


参考: https://blog.gaji.jp/2019/12/17/1860/



勉強になりました。