真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何解決angular4中JavaScript內(nèi)存溢出問題

這篇文章主要介紹如何解決angular4中JavaScript內(nèi)存溢出問題,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、涼州網(wǎng)站維護(hù)、網(wǎng)站推廣。

最近在寫基于angular4的項(xiàng)目的時(shí)候,在build --prod的時(shí)候,突然措手不及的蹦出個(gè)報(bào)錯(cuò),大致錯(cuò)誤如下:

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 
  1: /* anonymous */(aka /* anonymous */) [D:\dev\cobalt_wp\node_modules\webpack\lib\FlagDependencyExportsPlugin.js:77] [pc=0000026F721B51D6] (this=0000029851004131 ,dep=00000150FC6162C9 )
  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

注:這里的代碼并不是我的真實(shí)報(bào)錯(cuò)代碼,編譯時(shí)間太長,忘記截取了,大致的錯(cuò)誤基本一樣,如果你遇到了相同的問題,恭喜了,往下看能找到答案!

當(dāng)時(shí)我是蒙圈了,一直都編譯的挺好,怎么突然就溢出了呢?

可能的原因有如下:

1.angular4 在編譯的時(shí)候,對CPU和內(nèi)存的需求比較大,當(dāng)文件數(shù)量很多的時(shí)候,可能會(huì)出現(xiàn)內(nèi)存不足的情況(有可能);

2.當(dāng)代碼出現(xiàn)大量大數(shù)據(jù)的循環(huán)或者死循環(huán)(sever階段并沒有出現(xiàn)溢出,這個(gè)概率應(yīng)該不大);

3.angular訂閱的數(shù)據(jù)在 ngOnDestroy 階段沒有被銷毀,造成大量數(shù)據(jù)占用內(nèi)存(有可能)

目前沒有查到具體是什么原因造成的,哪位大神知道的,請不吝賜教,謝謝!

解決這個(gè)問題的過程很波折,這里就不說了,你們估計(jì)也不想知道,下面說一下解決方案吧:

核心思路是運(yùn)用v8引擎的舊屬性: --max_old_space_size 來修改內(nèi)存上線,至于這個(gè)屬性在哪里設(shè),就是一個(gè)磨人的小妖精了!

修改目錄:  my-project/node_modules/.bin  找到 ng.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" %*
)

修改目錄: my-project/node_modules/.bin  找到 ngc.cmd :

@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" %*
)

看到里面的--max_old_space_size設(shè)置了嗎? 至于數(shù)字設(shè)多少,你們自己看著辦吧,我的項(xiàng)目比較大,設(shè)個(gè)大點(diǎn)的值,以防不測,哈哈!

然后執(zhí)行 ng build --prod ,你以為這樣就行了嗎?這才是關(guān)鍵的地方!

本人親測,如上設(shè)置,再執(zhí)行編譯依然會(huì)報(bào)內(nèi)存溢出,貌似并沒什么卵用!把當(dāng)前目錄切換到 my-project/node_modules/.bin 然后再執(zhí)行 ng build --prod , 世界一下子就和平了! 

以上是“如何解決angular4中JavaScript內(nèi)存溢出問題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享題目:如何解決angular4中JavaScript內(nèi)存溢出問題
網(wǎng)頁鏈接:http://weahome.cn/article/gogcpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部