Dieses Mal zeige ich Ihnen, wie Sie das JS-Speicherüberlaufproblem in Angular4 lösen können. Was sind die Vorsichtsmaßnahmen , um das JS-Speicherüberlaufproblem in Angular4 zu lösen? Werfen wir einen Blick darauf.
Als ich kürzlich ein auf Angular4 basierendes Projekt schrieb, ist beim Erstellen von --prod plötzlich ein Fehler aufgetreten. Der Fehler lautet ungefähr wie folgt:
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
Hinweis: Der Code hier ist nicht mein tatsächlicher Fehlercode und ich habe vergessen, ihn abzufangen. Wenn Sie auf das gleiche Problem stoßen, können Sie die Antwort unten finden !
Ich war damals verwirrt. Die Zusammenstellung lief immer gut. Warum lief es plötzlich über?
Mögliche Gründe sind wie folgt:
1. Beim Kompilieren stellt Angular4 relativ hohe Anforderungen an CPU und Speicher. Bei einer großen Anzahl von Dateien ist möglicherweise nicht genügend Speicher vorhanden 2. Wenn der Code
Schleifenoder Endlosschleifen mit vielen Big Data enthält (es gibt keinen Überlauf in der Sever-Phase, sollte diese Wahrscheinlichkeit gering sein ). 3. Die von Angular abonnierten Daten werden in der ngOnDestroy-Phase nicht zerstört, was dazu führt, dass eine große Datenmenge Speicher belegt (möglich)
Die konkrete Ursache konnte bisher nicht gefunden werden. Kann mich gerne aufklären
Der Prozess zur Lösung dieses Problems ist sehr kompliziert, daher werde ich hier nicht näher darauf eingehen. Lassen Sie uns unten über die Lösung sprechen:
Die Kernidee besteht darin, das alte
-Attribut der v8-Enginezu verwenden: --max_old_space_size, um den Speicher online zu ändern, ist ein nerviger kleiner Kobold! Verzeichnis ändern: my-project/node_modules/.bin Finden Sie ng.cmd:
Verzeichnis ändern: my-project/node_modules/.bin Finden Sie 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" %* )
@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" %* )
Vue wird aktualisiert nach dem Verpacken des Projekts Wie man mit der 404-Anzeige umgeht
Das obige ist der detaillierte Inhalt vonSo lösen Sie das JS-Speicherüberlaufproblem in Angular4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!