9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

Angular AOT 编译大型项目出现内存溢出瓶颈

  • 2017-08-09
  • 本文字数:804 字

    阅读完需:约 3 分钟

自 2.0 版本起,Angular 就已支持了 AOT (Ahead-of-time)编译,该功能在服务器端对代码进行编译,这可以免去标准的 JIT(Just-in-time)方式每次都在浏览器运行时进行编译的消耗,优化了客户端的渲染速度及代码的网络传输效率。同时谷歌还推出了 Angular-cli 工具,进一步简化了 Angular 项目的管理、编译过程。

然而,在今年年初,有用户指出在使用Angular-cli 对大型项目进行AOT 编译时遇到内存溢出(OOM)的情况,导致编译失败。谷歌的Angular-cli 工程师Hans 表示,问题的原因是,在Angular-cli 使用的Webpack 插件中,路径解析没有很好地处理递归问题,从而导致大量内存占用,目前还没有找到很好的解决方案。

Angular 的 AOT 编译会进行代码静态分析、无用代码及依赖的剪枝、缩小代码体积等一系列优化,这个过程势必会消耗一定时间。该功能在带来运行时性能提升的同时,拖慢了编译速度,从而遭到不少用户的吐槽。官方也建议,在开发过程中使用JIT 的编译方式,而只在正式发布时使用AOT 编译。

目前能够暂时缓解内存溢出这一问题的方法是为其分配更多可用的内存,使编译器能够完成编译,但这毕竟治标不治本,随着项目的不断增长,在可预见的将来还是会遇到同样的问题。将独立应用拆分成小型的模块会是一个不错的选择,同时也有人提出投奔Vue、Ember 或React 等其他框架。

社区中已有不少用户遇到了这个内存溢出的问题,并能够成功将其重现,然而目前谷歌官方并没有对该问题提出明确的解决方案,值得注意的是AngularDart 并没有出现类似情况。社区对该问题的出现产生了些许担忧,Angular 将来是否能很好地支持大型应用?谷歌最终会不会更倾向于推广AngularDart?现在只能希望Angular 在后续版本中针对该问题进行更好的性能优化。


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2017-08-09 19:003030
用户头像

发布了 41 篇内容, 共 12.4 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

常见的中文电脑输入法软件有哪些?

InfoQ IT百科

怎么清理钉钉缓存的图片和文件?

InfoQ IT百科

React Hooks 的实现必须依赖 Fiber 么?

云智慧AIOps社区

前端 大前端 React Hooks preact

如何在APP原型上写需求?

InfoQ IT百科

如何共享电脑上的文件?

InfoQ IT百科

如何批量导出PPT里的图片?

InfoQ IT百科

如何给电脑文件夹设置密码?

InfoQ IT百科

亚马逊云科技平台上的无服务器 WebSocket

亚马逊云科技 (Amazon Web Services)

Serverless websocket 亚马逊云科技 appsync

如何对APP进行数据分析?

InfoQ IT百科

如何清除WinRAR压缩文件历史记录?

InfoQ IT百科

Chrome如何启用隐身模式?

InfoQ IT百科

Chrome如何安装插件?

InfoQ IT百科

APP访问用户的通讯录后,会得到通讯录上的信息吗?

InfoQ IT百科

如何用Excel画图?

InfoQ IT百科

电脑上切换输入法的快捷键是什么?

InfoQ IT百科

低代码让人人都是开发者,高校人才有了努力的新方向

钉钉宜搭低代码

阿里 低代码 数字化 钉钉宜搭 浙江工商大学

开源规则引擎——ice:致力于解决灵活繁复的硬编码问题

声网

开源 规则引擎 Dev for Dev

如何制定移动APP的加载与刷新策略?

InfoQ IT百科

如何认证成为亚马逊云科技 DevOps 专家?

亚马逊云科技 (Amazon Web Services)

DevOps 亚马逊云科技 tutorial caree

有哪些好用的杀毒软件?

InfoQ IT百科

md文件要用什么软件打开?

InfoQ IT百科

银行App为什么都不怎么好用?

InfoQ IT百科

抖音获客源码,蓝V思域运营,大热的X-Gorgon 0408和8408算法,今年的SaaS源码,编程语言需要变革吗?

yunluohd168

抖音短视频获客系统 抖音获客源码

下载软件哪个好?

InfoQ IT百科

如何用WinRAR将大文件分割成多个小文件?

InfoQ IT百科

APP、小程序、H5,如何选择不同的开发载体?

InfoQ IT百科

浅识鸿蒙的Java技术栈

Bob

TASKCTL 应用工程与作业类型的定义

TASKCTL

DevOps 敏捷开发 批量任务 ETL系统 自动化运维

如何进行APP版本升级管理?

InfoQ IT百科

Excel表格中怎么防止重复录入数据?

InfoQ IT百科

深度学习—人工智能的第三次热潮

云智慧AIOps社区

人工智能 机器学习 深度学习

  • 扫码添加小助手
    领取最新资料包
Angular AOT编译大型项目出现内存溢出瓶颈_语言 & 开发_周元昊_InfoQ精选文章