angular4 JavaScript内存溢出问题


Posted in Javascript onMarch 06, 2018

最近在写基于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和内存的需求比较大,当文件数量很多的时候,可能会出现内存不足的情况(有可能);

2.当代码出现大量大数据的循环或者死循环(sever阶段并没有出现溢出,这个概率应该不大);

3.angular订阅的数据在 ngOnDestroy 阶段没有被销毁,造成大量数据占用内存(有可能)

目前没有查到具体是什么原因造成的,哪位大神知道的,请不吝赐教,谢谢!

解决这个问题的过程很波折,这里就不说了,你们估计也不想知道,下面说一下解决方案吧:

核心思路是运用v8引擎的旧属性: --max_old_space_size 来修改内存上线,至于这个属性在哪里设,就是一个磨人的小妖精了!

修改目录:  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设置了吗? 至于数字设多少,你们自己看着办吧,我的项目比较大,设个大点的值,以防不测,哈哈!

然后执行 ng build --prod ,你以为这样就行了吗?这才是关键的地方!

本人亲测,如上设置,再执行编译依然会报内存溢出,貌似并没什么卵用!把当前目录切换到 my-project/node_modules/.bin 然后再执行 ng build --prod , 世界一下子就和平了! 本人亲测有效,收好不谢!

如果你想问,为什么不加 --aot , 这个就留个你自己先想想吧!

好了,忙里抽闲,分享一下这个大坑的填坑方法, 希望对大家有用!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
CSS常用网站布局实例
Apr 03 Javascript
jQuery Selector选择器小结
May 06 Javascript
在每个匹配元素的外部插入新元素的方法
Dec 20 Javascript
JavaScript中字符串拼接的基本方法
Jul 07 Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
Jun 23 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
Aug 18 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
jQuery插件zTree实现删除树子节点的方法示例
Mar 08 Javascript
vue-i18n结合Element-ui的配置方法
May 20 Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 Javascript
关于小程序优化的一些建议(小结)
Dec 10 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 #Javascript
vue中本地静态图片路径写法
Mar 06 #Javascript
webpack配置导致字体图标无法显示的解决方法
Mar 06 #Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
Mar 06 #Javascript
React BootStrap用户体验框架快速上手
Mar 06 #Javascript
基于vue打包后字体和图片资源失效问题的解决方法
Mar 06 #Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
Mar 06 #Javascript
You might like
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
关于js datetime的那点事
2011/11/15 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
JavaScript知识点整理
2015/12/09 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
python+django+sql学生信息管理后台开发
2018/01/11 Python
Python面向对象之继承和组合用法实例分析
2018/08/27 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
python中doctest库实例用法
2020/12/31 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
J2EE系统只能是基于web
2015/09/08 面试题
执行力心得体会
2013/12/31 职场文书
浙江文明网签名寄语
2014/01/18 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
保安岗位职责
2014/02/21 职场文书
装修设计师求职信
2014/02/26 职场文书
公司建议书怎么写
2014/05/15 职场文书
小学生环保标语
2014/06/13 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
postgresql 删除重复数据案例详解
2021/08/02 PostgreSQL
Python中的datetime包与time包包和模块详情
2022/02/28 Python