Maison > interface Web > Tutoriel H5 > le corps du texte

Comment gérer le débordement de mémoire dans AngularJS

php中世界最好的语言
Libérer: 2018-03-27 17:44:00
original
2492 Les gens l'ont consulté

Cette fois, je vais vous montrer comment gérer le débordement de mémoire dans angularjs, quelles sont les précautions pour gérer le débordement de mémoire dans angulairejs, ce qui suit est un cas pratique, commençons jetez un oeil.

Cette fois, je vais vous montrer comment gérer le débordement de mémoire d'angularjs, et quelles sont les précautions à prendre pour gérer le débordement de mémoire d'angularjs. Ce qui suit est un cas pratique, jetons un coup d'oeil.

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
Copier après la connexion

Remarque : Le code ici n'est pas mon vrai code d'erreur. Le temps de compilation était trop long et j'ai oublié de l'intercepter. L'erreur générale est fondamentalement la même. Si vous rencontrez le même problème, félicitations. , continuez ci-dessous. Voyons si nous pouvons trouver la réponse !

J'étais confus à l'époque, j'avais bien compilé, alors pourquoi a-t-il soudainement débordé ?

Les raisons possibles sont les suivantes. suit :

1. Lors de la compilation d'angular4, la demande de CPU et de mémoire est relativement importante. Lorsqu'il y a un grand nombre de fichiers, la mémoire peut être insuffisante (éventuellement) ; Lorsque le code contient une grande quantité de big data Boucle ou boucle infinie (il n'y a pas de débordement dans l'étape de séparation, cette probabilité doit être faible) ;

3 Les données souscrites par angulaire ne sont pas détruites dans le ngOnDestroy. étape, provoquant l'occupation d'une grande quantité de données (possible)

Actuellement, nous n'avons pas trouvé la cause spécifique. Quelqu'un est-il au courant ? N'hésitez pas à nous éclairer !

Le processus de résolution de ce problème est très complexe, je n'entrerai donc pas dans les détails ici. Vous ne le savez probablement pas, je ne veux pas savoir, parlons de la solution ci-dessous :

L'idée de base est d'utiliser l'ancien attribut

du moteur v8

 : --max_old_space_size pour modifier la mémoire en ligne. Quant à savoir où définir cet attribut, c'est un petit diable. !

Modifier le répertoire : mon-projet/node_modules/.bin Rechercher ng.cmd :

Modifier le répertoire : mon-projet/node_modules/.bin Rechercher ngc .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" %*
)
Copier après la connexion

Avez-vous vu le paramètre --max_old_space_size dedans ? Quant au nombre à définir, vous pouvez le décider vous-même. Mon projet est relativement volumineux, alors définissez une valeur plus grande pour éviter les imprévus, haha ! 🎜>

Ensuite, exécutez ng build --prod, pensez-vous que cela suffit ? C'est le point clé
@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" %*
)
Copier après la connexion

Je l'ai personnellement testé, avec les paramètres ci-dessus, puis l'exécution de la compilation fera toujours du Reporting ! le débordement de mémoire semble inutile ! Basculez le répertoire actuel vers my-project/node_modules/.bin puis exécutez ng build --prod, et le monde sera soudainement en paix. Je l'ai personnellement testé et ça marche, merci ! pour l'avoir gardé !

Si vous voulez demander, pourquoi ne pas ajouter --aot, laissez-le vous faire et réfléchissez-y d'abord !

D'accord, prenez un peu de temps sur votre emploi du temps chargé. pour partager comment combler ce grand trou. , j'espère que cela sera utile à tout le monde

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour un contenu plus passionnant, veuillez prêter attention au. php Site Web chinois

autres

articles connexes !

Lecture recommandée :

vue2.0 utilise swiper pour implémenter des publicités carrousel

Comment implémenter le défilement mobile dans vue

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!