circleciでFATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory
circleciを回していたときにタイトルのエラーが出た。
結論、circleciをre-runすることで解決した。
JavaScript heap out of memory が根本原因のようだ。
http://dotnsf.blog.jp/archives/1055200997.html
によると、Nodejsの1オブジェクトあたりのヒープサイズが足りなくなっている。デフォルトでは512MB。
"out of memory" と書かれているのでメモリ不足な状態になっているように見えます。が、これは物理メモリが足りないというメッセージではなく、Node.js の(1オブジェクトあたりの)ヒープサイズが足りなくなっている、というメッセージです。ちなみにデフォルトでは 512MB です。なので物理メモリを大量に搭載しているサーバーでも、サイズの巨大なファイルを扱ったり、大容量のアウトプットデータを取り扱おうとするとこのエラーは起こりうる、ということになります。
ヒープサイズが足りないので、増やしてやればよい。
$ NODE_OPTIONS="--max-old-space-size=1024" yarn testなど。
ただ、今回自分はCircleCIで落ちていて、re-run したら解決した。
ということは、自動でヒープメモリが解放されていた…?
参考
JavaScript heap out of memory が発生したときに試したこと ++ Gaji-Laboブログ
FATAL ERROR: JS Allocation failed - process out of memory Aborted (core dumped) - Node.js - Stack Overflow