最近在寫基于angular4的項目的時候,在build --prod的時候,突然措手不及的蹦出個報錯,大致錯誤如下:
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和內(nèi)存的需求比較大,當文件數(shù)量很多的時候,可能會出現(xiàn)內(nèi)存不足的情況(有可能);
2.當代碼出現(xiàn)大量大數(shù)據(jù)的循環(huán)或者死循環(huán)(sever階段并沒有出現(xiàn)溢出,這個概率應該不大);
3.angular訂閱的數(shù)據(jù)在 ngOnDestroy 階段沒有被銷毀,造成大量數(shù)據(jù)占用內(nèi)存(有可能)
目前沒有查到具體是什么原因造成的,哪位大神知道的,請不吝賜教,謝謝!
解決這個問題的過程很波折,這里就不說了,你們估計也不想知道,下面說一下解決方案吧:
核心思路是運用v8引擎的舊屬性: --max_old_space_size 來修改內(nèi)存上線,至于這個屬性在哪里設,就是一個磨人的小妖精了!
修改目錄: my-project/node_modules/.bin 找到 ng.cmd :
修改目錄: my-project/node_modules/.bin 找到 ngc.cmd :
看到里面的--max_old_space_size設置了嗎? 至于數(shù)字設多少,你們自己看著辦吧,我的項目比較大,設個大點的值,以防不測,哈哈!
然后執(zhí)行 ng build --prod ,你以為這樣就行了嗎?這才是關鍵的地方!
本人親測,如上設置,再執(zhí)行編譯依然會報內(nèi)存溢出,貌似并沒什么卵用!把當前目錄切換到 my-project/node_modules/.bin 然后再執(zhí)行 ng build --prod , 世界一下子就和平了! 本人親測有效,收好不謝!
上面是我整理給大家的,希望今后會對大家有幫助。
相關文章:
改變vue請求過來的數(shù)據(jù)中的某一項值的方法
詳解使用vue-cli腳手架初始化Vue項目下的項目結構
vue與vue-i18n結合實現(xiàn)后臺數(shù)據(jù)的多語言切換方法
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com