今回は、angularjsのメモリオーバーフローに対処する方法と、angularjsのメモリオーバーフローに対処する際の注意事項についてお届けします。実際のケースを見てみましょう。
今回はangularjsのメモリオーバーフローの対処方法と、angularjsのメモリオーバーフローに対処する際の注意点を紹介します。以下は実際的なケースですので見てみましょう。
70% building modules 1345/1345 modules 0 active <--- Last few GCs ---> ms: Mark-sweep 703.9 (837.9) -> 701.4 (811.9) MB, 331.3 / 0 ms [allocation failure] [GC in old space requested]. ms: Mark-sweep 701.4 (811.9) -> 701.4 (790.9) MB, 350.5 / 0 ms [allocation failure] [GC in old space requested]. ms: Mark-sweep 701.4 (790.9) -> 698.0 (760.9) MB, 433.7 / 0 ms [last resort gc]. ms: Mark-sweep 698.0 (760.9) -> 692.7 (751.9) MB, 328.7 / 0 ms [last resort gc]. <--- JS stacktrace ---> ==== JS stack trace ========================================= Security context: 00000298510373A9 <JS Object> 1: /* anonymous */(aka /* anonymous */) [D:\dev\cobalt_wp\node_modules\webpack\lib\FlagDependencyExportsPlugin.js:77] [pc=0000026F721B51D6] (this=0000029851004131 <undefined>,dep=00000150FC6162C9 <a NormalModule with map 0000025741730C01>) 2: arguments adaptor frame: 3->1 3: InnerArrayForEach(aka InnerArrayForEach) [native array.js:~924] [pc=0000026F71EE3DCD] (this=000002985100413... FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
注: ここにあるコードは、コンパイルに時間がかかりすぎてインターセプトするのを忘れたものです。同じ問題が発生した場合、おめでとうございます。
コンパイルはいつもうまくいっていましたが、なぜ突然オーバーフローしたのでしょうか? 考えられる理由は次のとおりです:
1. angular4 は CPU とメモリの需要が比較的大きいです。コンパイル時にファイル数が多い場合、メモリが不足する可能性があります (おそらく)。コードに大量のデータ ループまたは無限ループがある場合 (サーバー ステージでオーバーフローが発生しない場合)。確率は低いはずです);
3. angular によってサブスクライブされたデータが ngOnDestroy ステージで破棄されず、その結果、大量のデータがメモリを占有します (おそらく)
具体的な原因はまだ見つかっていません。遠慮なく教えてください、ありがとうございます!
解決済み この問題のプロセスは非常に紆余曲折があるので、ここでは触れません。解決策:
中心的なアイデアは、v8 エンジンの古い
属性を使用することです: --max_old_space_size を使用してオンラインでメモリを変更します。これについては、属性が設定されている場所はどこでも、迷惑な小さなゴブリンです。
ディレクトリを変更します。 my-project/node_modules/.bin ng.cmd を見つけます:@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" --max_old_space_size=8192 "%~dp0\..\._@angular_cli@1.0.0@@angular\cli\bin\ng" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node --max_old_space_size=8192 "%~dp0\..\._@angular_cli@1.0.0@@angular\cli\bin\ng" %*
)
@IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" --max_old_space_size=8192 "%~dp0\..\._@angular_compiler-cli@4.0.1@@angular\compiler-cli\src\main.js" %* ) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node --max_old_space_size=8192 "%~dp0\..\._@angular_compiler-cli@4.0.1@@angular\compiler-cli\src\main.js" %* )
その中の --max_old_space_size 設定を見たことがありますか?私のプロジェクトは比較的大きいので、事故を防ぐために大きな値を設定します (笑)。それから ng build --prod を実行します。これで十分だと思いますか?重要な点です!
私が個人的にテストし、上記のように設定しました。コンパイルを再度実行しても、やはりメモリ オーバーフローが報告されます。現在のディレクトリを -project/node_modules/ に切り替えてください。 .bin を実行してから ng build --prod を実行すると、世界が突然平和になります! 私が個人的にテストしたところ、動作しました。保存していただきありがとうございます
質問したい場合は、-aot を追加してみてはいかがでしょうか。 、これはそのままにしておいてください。まず自分で考えてください!
それでは、忙しいスケジュールの合間に時間をとって、この大きな穴を埋める方法を共有してください。皆さんのお役に立てれば幸いです!
あなたはマスターしたと思います。この記事の事例を読んだ後は、php 中国語 Web サイト
その他の関連記事にご注目ください。
推奨読書:
vue2.0はスワイパーを使用してカルーセル広告を実装します
vueでモバイルスクロールを実装する方法以上がangularjsでメモリオーバーフローに対処する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。