首页前端开发HTMLangularjs的内存溢出怎么处理

angularjs的内存溢出怎么处理

时间2024-01-23 09:45:03发布访客分类HTML浏览295
导读:收集整理的这篇文章主要介绍了angularjs的内存溢出怎么处理,觉得挺不错的,现在分享给大家,也给大家做个参考。这次给大家带来Angularjs的内存溢出怎么处理,处理angularjs内存溢出的注意事项有哪些,下面就是实战案例,一起来看...
收集整理的这篇文章主要介绍了angularjs的内存溢出怎么处理,觉得挺不错的,现在分享给大家,也给大家做个参考。这次给大家带来Angularjs的内存溢出怎么处理,处理angularjs内存溢出的注意事项有哪些,下面就是实战案例,一起来看一下。

这次给大家带来angularjs的内存溢出怎么处理,处理angularjs内存溢出的注意事项有哪些,下面就是实战案例,一起来看一下。

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 , 这个就留个你自己先想想吧!

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

相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!

推荐阅读:

vue2.0使用swiper实现轮播广告

vue中如何实现移动端的scroll滚动

以上就是angularjs的内存溢出怎么处理的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

javascript

若转载请注明出处: angularjs的内存溢出怎么处理
本文地址: https://pptw.com/jishu/584038.html
jQuery+koa2怎么实现Ajax请求 HTML5画布下js的文字云/标签云效果-D3 Cloud

游客 回复需填写必要信息