Quantcast
Channel: InfoQ - 促进软件开发领域知识与创新的传播
Viewing all articles
Browse latest Browse all 1638

轻量版V8最新优化成果:内存开销平均减少22%

$
0
0

我们在2018年末启动了一个名为 V8 Lite 的项目,项目的目标在于大幅降低 V8 引擎的内存使用。这个项目原本被设想为 V8 的独立轻量版本,专门为低内存的移动或嵌入式设备设计。在这种场景中我们更在乎减少内存的使用,而不是执行的吞吐量。不过,在工作进行过程中我们意识到,我们为 Lite 模式所做的许多内存优化工作可以被移植到常规版本的 V8 引擎,从而使所有 V8 用户收益。

这篇文章重点介绍了项目中的关键优化策略,以及这些优化如何在实际中节省工作负载内存。

注意:如果你更喜欢看演讲而不是阅读文章,请欣赏这个视频

轻量模式

为了优化 V8 的内存使用,首先需要了解 V8 如何使用内存,以及中哪些对象类存在大比例的堆占用。我们使用 V8 的内存可视化工具分析了许多典型网页,追踪其中堆大小的使用情况。

V8 引擎加载印度时报网站时不同对象类型的堆占用情况

分析得知,V8 的堆很大一部分被非关键对象占用,这些对象专门用于优化 JavaScript 的执行和异常处理。比如:优化代码结构;用于确定如何优化代码的反馈类型;C++ 和 JavaScript 对象绑定需要的冗余元数据;堆栈符号化过程中需要的元数据;只在页面加载期间执行了几次的函数的字节码。


Viewing all articles
Browse latest Browse all 1638

Trending Articles