2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

V8 引擎内存消耗的分析和优化

  • 2016-10-17
  • 本文字数:990 字

    阅读完需:约 3 分钟

在过去的几个月,V8 团队一直致力于降低 V8 引擎内存消耗的工作,主要内容包括推出新的 Ignition 解释器以及对 V8 解析器和编译器的改进。来自 V8 的工程师 Ulan Degenbaev、Michael Lippautz、Hannes Payer 和 Toon Verwaest 说明了这次工作的主要目标之一是根据测试基准使用特别的工具对 V8 的内存使用情况进行分析。

为了减少 V8 的内存占用,V8 团队利用 Chrome 54 版本的新特性对 V8 引擎的两个堆内存进行监控(C++ 堆和 JavaScript 堆)。Chrome 的这个新特性提供了–trace–gc-object-stats 标记,使用这个标记可以把 V8 的内存统计信息输出到控制台,然后使用 V8 heap visualizer 这个自制工具对输出的信息进行可视化,它会把两个堆的时间线视图以及对特定数据类型内存使用情况的详细分析结果展示出来。V8 团队还使用 Chrome 提供的另一个工具 Trace Event Profiling Tool 来分析内存,这个工具可以通过 about:tracing 来启动。

内存分析的结果告诉我们,垃圾回收器的延迟和内存消耗之间的平衡是决定 JavaScript 堆内存大小的因素之一。为堆保留更多的内存可以避免频繁的 GC,从而减少延迟。不过这对于低内存的设备来说会是个问题,它会导致设备崩溃或让应用程序挂起。为了达到延迟和内存消耗之间的平衡,V8 团队引入了一种新的内存缩减模式,这个模式会触发更频繁的垃圾回收,并通过更有效的压缩来减少内存碎片。从一个测试基准可以看到,新的模式总共可以把 V8 堆内存缩减 50%。引入的另一个优化措施是把 V8 的堆页面大小从 1M 减到 512K,有助于改善整体内存使用以及减少内存碎片。

V8 团队通过改进后台的解析任务来减小 C++ 的堆内存,这种改进可以让 V8 在网页加载过程中解析脚本。实际上,就像内存可视化工具所展示的那样,后台解析器会在代码编译后的很长一段时间内仍然保留着一块活跃的堆区域,而不是马上把它释放掉。另外,V8 解析器现在使用一种更有效的策略来压缩保存在语法树节点里的字段,而之前使用的是标准的 C++ 压缩。测试基准表明,峰值区域的内存缩减平均可以达到 40% 左右。

上面所描述的所有改进将出现在 Chrome 55 版本里,希望今年 12 月份可以放出。

查看英文原文: Profiling and Optimizing V8 Memory Consumption


感谢夏雪对本文的审校。

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

2016-10-17 19:003849
用户头像

发布了 322 篇内容, 共 157.3 次阅读, 收获喜欢 148 次。

关注

评论

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

会议通知|大模型基础设施高质量发展专题研讨会

中国信通院AI Infra工作组

深入解析单元测试框架如何构建可靠代码的基石

测吧(北京)科技有限公司

测试

YashanDB共享集群助力高端应用场景1:1平替

极客天地

Python dataclasses 中 field 的使用

测吧(北京)科技有限公司

测试

Fluid 1.0 版发布,打通云原生高效数据使用的“最后一公里”

阿里巴巴云原生

阿里云 云原生 Fluid

想做物联网卡系统 是因为不想忍

开源物联卡管理平台-设备管理

物联网 IoT eSIM安全 java 技术提升

很有意思的两个测试面试题

老张

这么简单的问题都不会,那还面试什么!?

王中阳Go

Go 面试 面试题 面经 Go进阶

淘宝搜索API返回值分析:关键字搜索在电商领域的应用价值

技术冰糖葫芦

API Explorer API 接口 API 策略 pinduoduo API

什么是自动化测试框架?

测吧(北京)科技有限公司

测试

Pydantic 基本操作指南

测吧(北京)科技有限公司

测试

从线上到线下!和鲸科技携手中国地质大学 UrbanComp,共绘 GeoAI 教学实践新篇章

ModelWhale

Python 人工智能 遥感影像 地球科学

【技术分享】重点机器状态变更飞书通知

伊克罗德信息科技

中国信通院启动科学智能(AI4S)产业图谱编制工作

中国信通院AI Infra工作组

大模型建设赋能再升级 大模型基础设施高质量发展研讨会圆满成功

中国信通院AI Infra工作组

软件测试学习笔记丨Bash编程语法

测试人

软件测试

为什么要使用 YAML 文件?

测吧(北京)科技有限公司

测试

Python dataclass 基本使用指南

测吧(北京)科技有限公司

测试

Python 数据类嵌套详解

测吧(北京)科技有限公司

测试

玩转豆包大模型,火山引擎助力小爱打造“最强大脑”

新消费日报

贺!亚马逊云科技生成式AI能力认证释放GenAI能量,重塑客户体验!

伊克罗德信息科技

开启多屏时代,让设备不再吃灰!ToDesk、Spacedesk、EV、Duet Display扩展屏实测报告

小喵子

ToDesk 多屏 扩展屏

软件测试学习笔记丨Linux系统与shell环境准备

测试人

软件测试

简单的限流过滤器

不在线第一只蜗牛

京东JD商品详情API返回值研究:商品数据与电商用户体验优化

技术冰糖葫芦

API Explorer API 接口 API 策略

多款可观测产品全面升级丨阿里云云原生 5 月产品月报

阿里巴巴云原生

阿里云 云原生 可观测

V8引擎内存消耗的分析和优化_JavaScript_Sergio De Simone_InfoQ精选文章