本篇文章主要介绍了angular4 javascript内存溢出问题,现在分享给大家,也给大家做个参考。
最近在写基于angular4的项目的时候,在build –prod的时候,突然措手不及的蹦出个报错,大致错误如下:
70% building modules 1345/1345 modules 0 activems: 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 stack trace =========================================Security context: 00000298510373A9 1: /* anonymous */(aka /* anonymous */) [D:devcobalt_wpode_moduleswebpacklibFlagDependencyExportsPlugin.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
登录后复制
注:这里的代码并不是我的真实报错代码,编译时间太长,忘记截取了,大致的错误基本一样,如果你遇到了相同的问题,恭喜了,往下看能找到答案!
当时我是蒙圈了,一直都编译的挺好,怎么突然就溢出了呢?
立即学习“Java免费学习笔记(深入)”;
可能的原因有如下:
1.angular4 在编译的时候,对CPU和内存的需求比较大,当文件数量很多的时候,可能会出现内存不足的情况(有可能);
2.当代码出现大量大数据的循环或者死循环(sever阶段并没有出现溢出,这个概率应该不大);
3.angular订阅的数据在 ngOnDestroy 阶段没有被销毁,造成大量数据占用内存(有可能)
目前没有查到具体是什么原因造成的,哪位大神知道的,请不吝赐教,谢谢!
解决这个问题的过程很波折,这里就不说了,你们估计也不想知道,下面说一下解决方案吧:
核心思路是运用v8引擎的旧属性: –max_old_space_size 来修改内存上线,至于这个属性在哪里设,就是一个磨人的小妖精了!
修改目录: my-project/node_modules/.bin 找到 ng.cmd :
@IF EXIST "%~dp0ode.exe" ( "%~dp0ode.exe" --max_old_space_size=8192 "%~dp0..._@angular_cli@1.0.0@@angularcliing" %*) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node --max_old_space_size=8192 "%~dp0..._@angular_cli@1.0.0@@angularcliing" %*)
登录后复制
修改目录: my-project/node_modules/.bin 找到 ngc.cmd :
@IF EXIST "%~dp0ode.exe" ( "%~dp0ode.exe" --max_old_space_size=8192 "%~dp0..._@angular_compiler-cli@4.0.1@@angularcompiler-clisrcmain.js" %*) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node --max_old_space_size=8192 "%~dp0..._@angular_compiler-cli@4.0.1@@angularcompiler-clisrcmain.js" %*)
登录后复制
看到里面的–max_old_space_size设置了吗? 至于数字设多少,你们自己看着办吧,我的项目比较大,设个大点的值,以防不测,哈哈!
然后执行 ng build –prod ,你以为这样就行了吗?这才是关键的地方!
本人亲测,如上设置,再执行编译依然会报内存溢出,貌似并没什么卵用!把当前目录切换到 my-project/node_modules/.bin 然后再执行 ng build –prod , 世界一下子就和平了! 本人亲测有效,收好不谢!
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
改变vue请求过来的数据中的某一项值的方法
详解使用vue-cli脚手架初始化Vue项目下的项目结构
vue与vue-i18n结合实现后台数据的多语言切换方法
以上就是在使用angular4中出现JavaScript内存溢出问题(详细教程)的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2752462.html