javascript
FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap
有一個angular的項目,工程比較大,在一個內存為8G的筆記本上運行打包命令失敗,報錯:
FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap out of memory原因是內存不足,需要加大V8默認的內存限制
–max-old-space-size
以下內容來自http://nodejs.cn/api v18.7.0版本的說明
Sets the max memory size of V8’s old memory section. As memory consumption approaches the limit, V8 will spend more time on garbage collection in an effort to free unused memory.
翻譯:設置 V8 舊內存部分的最大內存大小。 隨著內存消耗接近極限,V8 會花更多的時間在垃圾回收上,以釋放未使用的內存。
On a machine with 2 GiB of memory, consider setting this to 1536 (1.5 GiB) to leave some memory for other uses and avoid swapping.
$ node --max-old-space-size=1536 index.js
看網上有人給的建議是 添加 --max_old_space_size這個參數,不知道具體是什么原因,也沒研究,這里采用的是–max-old-space-size
在VUE的項目中做過如下修改生效
在node_modules.bin下的webpack-dev-server 或者 webpack-dev-server.cmd 文件中添加 --max-old-space-size=4096,可以根據項目調整大小,添加到下圖箭頭所示位置
在angular項目中做的修改
1、 在package.json中scripts 部分運行node命令的地方都加上–max-old-space-size=4096
"scripts": {"dev": "ng serve --port 4200 --open","dev:open": "ng serve --disableHostCheck --host 0.0.0.0 --port 4200 --open","build": "ng build --prod --outputPath=dist/web --base-href=/web/","build:dev": "node --max-old-space-size=4096 run.js dev & ng build --prod --outputPath=dist/web --base-href=/web/","copy": "node node_modules/ng-zorro-iop/copy.js","test": "ng test","lint": "ng lint","e2e": "ng e2e"},2、在目錄node_modules/.bin下的ng.cmd和ngc.cmd文件中,添加 --max-old-space-size=4096
@ECHO off SETLOCAL CALL :find_dp0IF EXIST "%dp0%\node.exe" (SET "_prog=%dp0%\node.exe" ) ELSE (SET "_prog=node"SET PATHEXT=%PATHEXT:;.JS;=;% )"%_prog%" --max-old-space-size=4096 "%dp0%\..\@angular\cli\bin\ng" %* ENDLOCAL EXIT /b %errorlevel% :find_dp0 SET dp0=%~dp0 EXIT /b總結
以上是生活随笔為你收集整理的FATAL ERROR: MarkCompactCollector: young object promotion failed Allocation failed - JavaScript heap的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: d3dcompiler_47.dll:
- 下一篇: 分析ajax爬取果壳网