Maison > Article > interface Web > Comment gérer le débordement de mémoire dans AngularJS
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
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 attributdu 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" %* )
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" %* )
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
autresarticles connexes !
vue2.0 utilise swiper pour implémenter des publicités carrouselComment 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!