致命的なエラー: ヒープ制限に近い無効なマーク圧縮割り当てに失敗しました - Ionic 3 で JavaScript ヒープがメモリ不足です 質問する

致命的なエラー: ヒープ制限に近い無効なマーク圧縮割り当てに失敗しました - Ionic 3 で JavaScript ヒープがメモリ不足です 質問する

コマンドを使用して Ionic 3 プロジェクトを実行するとionic serve、次のエラーが発生します。

致命的なエラーのスクリーンショット: ヒープ制限に近づいたため、マーク圧縮が無効になり、割り当てに失敗しました - JavaScript

ベストアンサー1

Google からこの質問にたどり着いた人のための、Angular 以外の一般的な回答:

このエラーが発生するほとんどの場合、原因はメモリ リーク、ライブラリの追加/バージョン アップグレード、またはバージョン間での Node.js のメモリ管理方法の違い (例: Node.js バージョン <= 10 と Node.js バージョン > 10) です。

通常、Node.js に割り当てられたメモリを増やすだけでプログラムを実行できるようになりますが、実際の問題は解決されない可能性があり、ノード プロセスによって使用されるメモリが割り当てた新しいメモリを超える可能性があります。Node.js プロセスの実行を開始するとき、または Node.js > 10 に更新するときに、Node.js プロセスのメモリ使用量をプロファイリングすることをお勧めします。

メモリリークが発生しました。素晴らしい記事Node.js でのメモリ リークのデバッグについて。

つまり、メモリを増やすには、Node.js プロセスを実行するターミナルで次の操作を実行します。

export NODE_OPTIONS="--max-old-space-size=8192"

または Windows の場合:

Set NODE_OPTIONS="--max-old-space-size=8192"

ここでの値は以下のいずれかmax-old-space-sizeになります:[2048, 4096, 8192, 16384]など

さらにわかりやすくするために、さらに例を挙げます。

export NODE_OPTIONS="--max-old-space-size=5120" # Increase to 5 GB
export NODE_OPTIONS="--max-old-space-size=6144" # Increase to 6 GB
export NODE_OPTIONS="--max-old-space-size=7168" # Increase to 7 GB
export NODE_OPTIONS="--max-old-space-size=8192" # Increase to 8 GB

# and so on...

# formula:
export NODE_OPTIONS="--max-old-space-size=(X * 1024)" # Increase to X GB

# Note: it doesn't have to be multiples of 1024.
# max-old-space-size can be any number of memory megabytes (MB) you have available.

max-old-space-size の現在の値 (MB 単位) を確認します。

max-old-space-sizeの現在の値(正確ではないが非常に近い値)(MB単位)を確認するには、ターミナルで実行します。

node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))'

おすすめ記事