ホームページ  >  記事  >  ウェブフロントエンド  >  angularjsでメモリオーバーフローに対処する方法

angularjsでメモリオーバーフローに対処する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-27 17:44:002452ブラウズ

今回は、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" %*
)
ディレクトリを変更します: my-project/node_modules/.bin ngc.cmd を見つけます:

@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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。