写点什么

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:003635
用户头像

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

关注

评论

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

淘宝天猫API接口深度探索:商品详情与关键词搜索商品列表的高效应用与实战代码

代码忍者

淘宝API接口

京东商品视频API接口系列(京东API)

tbapi

京东API接口 京东商品视频接口

清华大学AutoDroid-V2,软件测试行业将如何发展

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

测试

函数计算助您 7 分钟极速部署开源对话大模型

阿里巴巴云原生

阿里云 云原生

MortiseAI : AI 驱动的工程生产力, 面向 AGI 编程之路

MortiseAI@HugoHu

开发工具 大模型 AI智能体 大模型应用 #AI编程

清华大学AutoDroid-V2,软件测试行业将如何发展

测试人

软件测试

“数据飞轮” 理念焕新,助力 2025 企业数智化发展

字节跳动数据平台

道旅科技借助云消息队列 Kafka 版加速旅游大数据创新发展

阿里巴巴云原生

kafka 阿里云 云原生

【YashanDB知识库】load data一次导入多个文件的数据时报错

YashanDB

数据库 yashandb

腾讯二面:Redis与MySQL双写一致性如何保证?

王中阳Go

MySQL 高可用 面试问题 redis 底层原理

AI智能体在自动化测试中的应用

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

测试

Java定时任务大盘点:发工资也能“指日可待”

京东科技开发者

1月15日直播预告丨AI赋能指标管理分析 开启企业数智领航时代

袋鼠云数栈

焱融存储增速 No.1丨业界顶级性能领跑 AI 存储赛道

焱融科技

人工智能 IDC AI存储 焱融存储

等级保护建设方案,密评资料整理合集(Word原件)

金陵老街

等保 等级保护 密码测评 密评

速来体验!基于有道子曰的翻译大模型2.0正式上线

有道技术团队

人工智能

AIP智能体平台:重塑日常工作流程,提升团队效率

大东(AIP智能体运营专员)

人工智能

一款好的低代码开发平台应该是什么样?

伤感汤姆布利柏

低代码,帮你解决80%重复开发工作!

秃头小帅oi

AIP智能体平台:打造高效的超大型文本处理解决方案

大东(AIP智能体运营专员)

人工智能

基于javaPoet的缓存key优化实践

京东科技开发者

京东广告生成式召回基于 NVIDIA TensorRT-LLM 的推理加速实践

京东科技开发者

AI智能体(AI Agent)开发的技术难点

北京木奇移动技术有限公司

AI教育 AI智能体 软件外包公司

CAP:Serverless + AI 让应用开发更简单

阿里巴巴云原生

阿里云 云原生 CAP

Triton-Lang在Transformer优化加速中的实践 | 得物技术

得物技术

人工智能 算法

探秘淘宝商品SKU信息API接口

科普小能手

数据挖掘 数据分析 淘宝 电商 API 接口

如何选择工作机会和offer

老张

面试 求职 职业生涯规划

为什么货币政策紧缩但经济持续火爆?

TechubNews

经济形势 货币政策

JimuBI 积木大屏 v1.9.3 发布,免费可视化大屏

JEECG低代码

大屏设计器 免费大屏 开源大屏

中药熬制机械加工MES系统

万界星空科技

mes 制造业工厂 机械加工mes 中药加工 中药罐机械加工

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