跳到主要内容

17 篇博文 含有标签「内存」

查看所有标签

Orinoco:年轻代垃圾回收

· 阅读需 8 分钟
乌兰·德根巴耶夫、迈克尔·利普奥茨和汉内斯·派尔,[TSAN](https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual)的朋友们

在V8中,JavaScript对象被分配到由V8垃圾回收器管理的堆上。在之前的博客文章中,我们已经讨论了如何减少垃圾回收暂停时间不止一次)以及内存消耗。在这篇博客文章中,我们介绍了并行Scavenger,这是V8的主要并发和并行垃圾回收器Orinoco的最新功能之一,并讨论了设计决策以及我们实施的一些备选方法。

关于懒惰的实习:被优化函数的懒惰取消链接

· 阅读需 12 分钟
Juliana Franco ([@jupvfranco](https://twitter.com/jupvfranco)), 懒惰性专家

大约三个月前,我作为实习生加入了V8团队(Google Munich),从那时起,我一直在研究虚拟机的 去优化器 —— 这是对我来说全新的领域,但也证明了是一个有趣且具挑战性的项目。实习的第一部分重点在于提高虚拟机的安全性。第二部分则集中于性能改进,即删除用于取消链接以前被优化的函数的数据结构,而这个结构在垃圾回收时是性能瓶颈。本博客文章描述了我实习的第二部分。我将解释V8过去如何取消链接被优化的函数,我们如何对其进行更改,以及获得了哪些性能提升。

Chrome的一小步,V8的一大堆

· 阅读需 2 分钟
堆的守护者Ulan Degenbaev, Hannes Payer, Michael Lippautz,以及DevTools战士Alexey Kozyatinskiy

V8对其堆大小有一个硬限制。这充当了防止应用程序内存泄漏的保护措施。当应用程序达到这一硬限制时,V8会执行一系列最后的垃圾回收措施。如果垃圾回收未能释放内存,V8会停止执行并报告内存不足故障。如果没有这一硬限制,内存泄漏的应用程序可能会占用所有系统内存,从而影响其他应用程序的性能。

优化 V8 的内存消耗

· 阅读需 9 分钟
V8 内存管理工程师 Ulan Degenbaev、Michael Lippautz、Hannes Payer 和 Toon Verwaest

内存消耗是 JavaScript 虚拟机性能权衡空间中的一个重要维度。在过去的几个月中,V8 团队分析并显著减少了多个网站的内存占用,这些网站被认为是现代 Web 开发模式的代表。在这篇博客中,我们展示了分析中使用的工作负载和工具,概述了垃圾回收器的内存优化,并展示了我们如何减少 V8 的解析器及其编译器的内存消耗。

Jank克星第二部分:Orinoco

· 阅读需 6 分钟
Jank克星:Ulan Degenbaev,Michael Lippautz,和Hannes Payer

之前的博客文章中,我们介绍了垃圾回收中断顺畅浏览体验导致的卡顿问题。在本文中,我们介绍了三种优化,这些优化为V8中的新垃圾回收器(代号为_Orinoco_)奠定了基础。Orinoco基于这样一个理念:实现一个大部分并行和并发的垃圾回收器,在没有严格代界限的情况下,可以减少垃圾回收的卡顿和内存消耗,同时提供高吞吐量。我们没有将Orinoco作为单独的垃圾回收器在标志后面实现,而是决定逐步在V8的主代码库中发布Orinoco的功能以便用户立即受益。本篇文章讨论的三个功能是并行压缩、并行记忆集处理和黑色分配。

Jank Busters 第一部分

· 阅读需 4 分钟
卡顿终结者:Jochen Eisinger,Michael Lippautz 和 Hannes Payer

卡顿,也就是肉眼可见的卡顿,可以在 Chrome 未能在 16.66 毫秒内渲染一帧时被注意到(导致每秒 60 帧的运动中断)。截至今天,大多数 V8 的垃圾回收工作是在主渲染线程上执行的,参见图 1,这通常导致在需要维护过多对象时出现卡顿。消除卡顿一直是 V8 团队的优先任务之一(123)。本文讨论了在 Chrome 41 和 Chrome 46 之间实施的一些优化,这些优化显著减少了垃圾回收的暂停时间,从而提高了用户体验。

免费获得垃圾回收

· 阅读需 9 分钟
Hannes Payer和Ross McIlroy,Idle垃圾收集器

JavaScript性能仍然是Chrome核心价值的关键部分,尤其是在提供流畅体验方面。自Chrome 41开始,V8采用了一种新技术,通过在小的、否则会被闲置的时间片段中隐藏昂贵的内存管理操作,提高了网页应用程序的响应性。因此,网页开发者可以期望更流畅的滚动效果和柔顺动画,同时由于垃圾回收减少了大量卡顿现象。