跳到主要内容

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

查看所有标签

加速 V8 堆快照

· 阅读需 11 分钟
Jose Dapena Paz

这篇博客文章由 José Dapena Paz (Igalia) 撰写,并得到了 Jason Williams (Bloomberg)、Ashley Claymore (Bloomberg)、Rob Palmer (Bloomberg)、Joyee Cheung (Igalia) 和 Shu-yu Guo (Google) 的贡献。

在这篇关于 V8 堆快照的文章中,我将谈谈由 Bloomberg 工程师发现的一些性能问题,以及我们如何解决这些问题,使 JavaScript 内存分析比以往更快。

问题描述

Bloomberg 的工程师正在诊断一个 JavaScript 应用中的内存泄漏问题。应用程序由于 内存不足 错误而失败。对于测试的应用程序,V8 的堆限制配置约为 1400 MB。一般情况下,V8 的垃圾收集器应该能够将堆使用保持在该限制以下,因此这些错误表明可能存在泄漏。

Oilpan中的指针压缩

· 阅读需 14 分钟
Anton Bikineev 和 Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)),行走的反汇编程序

当我编译一个使用少于4GB RAM的程序时,却用64位指针,这绝对是愚蠢的。当这样的指针值出现在结构中时,既浪费了一半的内存,也实质上丢掉了一半的缓存。

Donald Knuth (2008)

为C++改造时间内存安全

· 阅读需 11 分钟
Anton Bikineev, Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), Hannes Payer ([@PayerHannes](https://twitter.com/PayerHannes))
备注

注意: 本文最初发布在Google安全博客

Chrome的内存安全是一个持续不断的努力,以保护我们的用户。我们不断尝试使用不同的技术以超越恶意行为者。在这种精神下,这篇文章介绍了我们使用堆扫描技术来改进C++的内存安全的旅程。

Oilpan库

· 阅读需 6 分钟
Anton Bikineev、Omer Katz([@omerktz](https://twitter.com/omerktz))和Michael Lippautz([@mlippautz](https://twitter.com/mlippautz)),高效且有效的文件搬运者

虽然此篇文章标题可能暗示深入探讨有关油底壳的书籍集合——这个主题因其设计规范意外地涉及了大量文献——实际上,我们会仔细探讨Oilpan,它是一个通过V8作为库托管的C++垃圾回收器,从V8 v9.4开始。

高性能C++垃圾回收器

· 阅读需 10 分钟
Anton Bikineev, Omer Katz ([@omerktz](https://twitter.com/omerktz)), 和 Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)),C++内存专家

过去我们曾写过 关于 垃圾回收的文章,介绍了JavaScript、文档对象模型(DOM)的垃圾回收以及这些功能在V8中的实现和优化。然而,Chromium中并非所有内容都是JavaScript,因为大部分浏览器及其Blink渲染引擎是用C++编写的,而V8嵌入其中。JavaScript可以用来与DOM交互,然后由渲染管线处理。

V8中的指针压缩

· 阅读需 22 分钟
Igor Sheludko 和 Santiago Aboy Solanes,*指针压缩专家*

在内存和性能之间总是存在不断的斗争。作为用户,我们希望既能快速又尽量少地使用内存。不幸的是,通常提升性能会带来内存消耗的代价(反之亦然)。

更轻量的 V8

· 阅读需 12 分钟
Mythri Alle、Dan Elphick 和 [Ross McIlroy](https://twitter.com/rossmcilroy),V8 内存优化团队

2018 年末,我们启动了一个名为 V8 Lite 的项目,旨在显著减少 V8 的内存使用量。起初,这个项目被设想为 V8 的一种独立的 轻量模式,专门针对低内存移动设备或更注重内存使用而非吞吐执行速度的嵌入场景。然而,在进行这项工作时,我们发现许多针对这个 轻量模式 的内存优化可以迁移到常规 V8,从而让所有 V8 的用户受益。

垃圾话:Orinoco垃圾回收器

· 阅读需 13 分钟
Peter “垃圾” Marshall ([@hooraybuffer](https://twitter.com/hooraybuffer))

在过去的几年里,V8垃圾回收器(GC)发生了很大的变化。Orinoco项目将一个顺序的、全停式的垃圾回收器转变成了一个大部分并行和并发的回收器,具备增量回退功能。

V8中的并发标记

· 阅读需 13 分钟
Ulan Degenbaev, Michael Lippautz 和 Hannes Payer — 主线程解放者

这篇文章描述了一种叫做_并发标记_的垃圾回收技术。这项优化使 JavaScript 应用程序在垃圾回收器扫描堆以发现并标记活动对象时可以继续执行。我们的基准测试表明,并发标记将主线程上标记所需的时间减少了60%-70%。并发标记是 Orinoco 项目 的最后一块拼图 — 这是一个逐步用新的大多数并发和并行垃圾回收器替换旧垃圾回收器的项目。并发标记在 Chrome 64 和 Node.js v10 中默认启用。

从JS到DOM再回溯的跟踪

· 阅读需 5 分钟
Ulan Degenbaev、Alexei Filippov、Michael Lippautz 和 Hannes Payer——DOM 小组

在Chrome 66中调试内存泄漏变得更加容易了。Chrome的开发者工具现在可以跟踪和快照C++ DOM对象,并显示从JavaScript可达的所有DOM对象及其引用。这项功能是V8垃圾回收器的新C++跟踪机制的优点之一。