在使用angular4中出现JavaScript内存溢出问题(详细教程)
本篇文章主要介绍了angular4 JavaScript内存溢出问题,现在分享给大家,也给大家做个参考。
最近在写基于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 , 世界一下子就和平了! 本人亲测有效,收好不谢!
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
以上是在使用angular4中出现JavaScript内存溢出问题(详细教程)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

对于机械硬盘、或SATA固态硬盘,软件运行速度的提升会有感觉,如果是NVME硬盘,可能感觉不到。一,注册表导入桌面新建一个文本文档,复制粘贴如下内容,另存为1.reg,然后右键合并,并重启电脑。WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement]"DisablePagingExecutive"=d

最近,小米发布了一款功能强大的高端智能手机小米14Pro,它不仅外观设计时尚,而且拥有内在和外在的黑科技。该手机拥有顶级的性能和出色的多任务处理能力,让用户能够畅享快速而流畅的手机使用体验。但是性能也是会收到内存的影响的,很多用户们想要知道小米14Pro如何查看内存占用,赶快来看看吧。小米14Pro如何查看内存占用?小米14Pro查看内存占用方法介绍打开小米14Pro手机【设置】中的【应用管理】按钮。查看已安装的所有应用列表,浏览列表并找到你想查看的应用,点击它进入应用详细页面。在应用详细页面中

新手用户在购买电脑时,会好奇电脑内存8g和16g有什么区别?应该选择8g还是16g呢?针对这个问题,今天小编就来跟大家详细说明一下。 电脑内存8g和16g的区别大吗? 1、在一般家庭或者是普通工作使用,8G运行内存可以满足,因此在使用过程中8g和16g区别不大。 2、游戏爱好者使用时候,目前大型游戏基本上是6g起步,8g是最低标准。目前在屏幕是2k的情况下,更高分辨率并不会带来更高的帧数表现,因此对8g和16g也无较大差异。 3、对于音频、视频剪辑使用者来说,8g和16g会出现明显区

本站9月3日消息,韩媒etnews当地时间昨日报道称,三星电子和SK海力士的“类HBM式”堆叠结构移动内存产品将在2026年后实现商业化。消息人士表示这两大韩国内存巨头将堆叠式移动内存视为未来重要收入来源,计划将“类HBM内存”扩展到智能手机、平板电脑和笔记本电脑中,为端侧AI提供动力。综合本站此前报道,三星电子的此类产品叫做LPWideI/O内存,SK海力士则将这方面技术称为VFO。两家企业使用了大致相同的技术路线,即将扇出封装和垂直通道结合在一起。三星电子的LPWideI/O内存位宽达512

报道称,三星电子的高管DaeWooKim表示,在2024年韩国微电子和封装学会年会上,三星电子将完成采用16层混合键合HBM内存技术的验证。据悉,这项技术已通过技术验证。报道还称,此次技术验证将为未来若干年内的内存市场发展奠定基础。DaeWooKim表示,三星电子成功制造了基于混合键合技术的16层堆叠HBM3内存,该内存样品工作正常,未来16层堆叠混合键合技术将用于HBM4内存量产。▲图源TheElec,下同相较现有键合工艺,混合键合无需在DRAM内存层间添加凸块,而是将上下两层直接铜对铜连接,

本站3月21日消息,美光在发布季度财报后举行了电话会议。在该会议上美光CEO桑杰・梅赫罗特拉(SanjayMehrotra)表示,相对于传统内存,HBM对晶圆量的消耗明显更高。美光表示,在同一节点生产同等容量的情况下,目前最先进的HBM3E内存对晶圆量的消耗是标准DDR5的三倍,并且预计随着性能的提升和封装复杂度的加剧,在未来的HBM4上这一比值将进一步提升。参考本站以往报道,这一高比值有相当一部分原因在HBM的低良率上。HBM内存采用多层DRAM内存TSV连接堆叠而成,一层出现问题就意味着整个

本站5月6日消息,雷克沙Lexar推出Ares战神之翼系列DDR57600CL36超频内存,16GBx2套条5月7日0点开启50元定金预售,到手价1299元。雷克沙战神之翼内存采用海力士A-die内存颗粒,支持英特尔XMP3.0,提供以下两个超频预设:7600MT/s:CL36-46-46-961.4V8000MT/s:CL38-48-49-1001.45V散热方面,这款内存套装搭载1.8mm厚度的全铝散热马甲,配备PMIC专属导热硅脂垫。内存采用8颗高亮LED灯珠,支持13种RGB灯光模式,可

如果您已经安装了新的RAM,但它没有显示在您的Windows计算机上,本文将帮助您解决此问题。通常,我们通过升级RAM来提高系统的性能。然而,系统性能也取决于其他硬件,如CPU、SSD等。升级RAM也可以提升您的游戏体验。一些用户注意到安装的内存在Windows11/10中没有显示。如果您遇到这种情况,您可以使用此处提供的建议。已安装的内存未显示在Windows11上如果您的Windows11/10PC上没有显示已安装的RAM,以下建议将对您有所帮助。安装的内存是否与您的计算机主板兼容?在BIO
