0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MemLab 的工作原理

lhl545545 来源:OSC开源社区 作者:OSC开源社区 2022-09-19 11:04 次阅读

Meta 宣布开源了 MemLab,一个用于在基于 Chromium 的浏览器上的 JavaScript 应用程序中查找内存泄漏的工具。公告称,找到并解决内存泄漏的根本原因对于在 Web 应用程序上提供高质量的用户体验非常重要。MemLab 帮助 Meta 的工程师和开发人员改善了用户体验,并在内存优化方面做出了重大改进。“我们希望它也能为更大的 JavaScript 社区做出贡献”。

Facebook.com 在 2020 年被重新设计为单页应用程序 (SPA),该应用程序的大部分渲染和导航使用客户端 JavaScript。而 Meta 的大多数其他流行网络应用程序都使用了类似的架构来构建,包括 Instagram 和 Workplace。该公司表示,虽然这种架构使其能够提供更快的用户交互、更好的开发人员体验和更像应用程序的感觉,但在客户端维护 Web 应用程序状态会使有效管理客户端内存变得更加复杂。

“使用我们的网络应用程序的人通常会立即注意到性能和功能正确性问题。然而,内存泄漏是另一回事;它不会立即被察觉,因为它一次会占用一大块内存 —— 影响整个 Web 会话并使后续交互变得更慢且响应更慢。为了帮助我们的开发人员解决这个问题,我们构建了 MemLab,这是一个 JavaScript 内存测试框架,它可以自动进行泄漏检测并更容易找到内存泄漏的根本原因。我们在 Meta 使用 MemLab 成功地控制了不可持续的内存增长,并识别了我们产品和基础设施中的内存泄漏和内存优化机会。我们已经在 GitHub 上开源了 MemLab,我们很高兴能与 JavaScript 社区合作,让开发人员从今天开始使用 MemLab。”

MemLab 的工作原理是通过预定义的测试场景运行 headless 浏览器并对 JavaScript heap snapshots 进行差异分析来发现内存泄漏。此过程分六个步骤进行:

浏览器交互

9b76b57a-373d-11ed-ba43-dac502259ad0.gif

区分 heap

细化内存泄漏列表

生成 retainer traces

Clustering retainer traces

报告泄漏

9b98a6b2-373d-11ed-ba43-dac502259ad0.png

MemLab 提供内存泄漏检测功能。对于浏览器内存泄漏检测,MemLab 需要开发人员提供的唯一输入是一个测试场景文件,该文件定义了如何通过 overriding Puppeteer API 和 CSS 选择器的三个回调来与网页进行交互。MemLab 会自动对 JavaScript heap 进行差异化处理,完善内存泄漏,并对结果进行汇总。

9bc2917a-373d-11ed-ba43-dac502259ad0.gif

MemLab 的另一个特性是提供了 “JavaScript heap 的 Graph-view API”。Node.js 程序或 Jest test 也可以使用 graph-view API 来获取其自身状态的 heap graph view,进行 self-memory 检查,并编写各种内存断言。除了内存泄漏检测,MemLab 还包括一组内置的 CLI 命令和 API,用于寻找内存优化机会。

9bee8a46-373d-11ed-ba43-dac502259ad0.jpg

通过使用 MemLab 检测和诊断内存泄漏,Meta 方面称,其在 2021 年上半年将 Facebook.com 上的 OOM 崩溃减少了 50%。

9bff6014-373d-11ed-ba43-dac502259ad0.jpg

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2901

    浏览量

    73504
  • 浏览器
    +关注

    关注

    1

    文章

    1007

    浏览量

    34947
  • 应用程序
    +关注

    关注

    37

    文章

    3195

    浏览量

    57342

原文标题:Meta开源MemLab:JavaScript内存泄漏检测工具

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电容降压的工作原理

    电容降压的工作原理 电容降压的工作原理并不复杂。他的工作原理是利用电容在一定的交流信号频率下产生的容抗来限制最大工作
    发表于 11-30 10:47 1414次阅读

    感光太阳能灯工作原理。#工作原理大揭秘

    太阳工作原理DIY
    jf_24750660
    发布于 :2022年11月07日 22:26:04

    时域反射计的工作原理

    传统时域反射计工作原理时域反射计TDR是最常用的测量传输线特征阻抗的仪器,它是利用时域反射的原理进行特性阻抗的测量。图1是传统TDR工作原理图。图1时域反射计TDR工作原理
    发表于 07-01 08:23

    伺服电机的工作原理是什么

    什么是伺服系统?伺服电机的工作原理是什么?交流伺服电机的工作原理是什么?
    发表于 10-11 08:32

    伺服阀的工作原理

    伺服阀的工作原理 图2是伺服阀的工作原理图。
    发表于 11-19 16:21 1.6w次阅读

    步进电机的工作原理

    步进电机的工作原理 以磁阻式步进电机为例,介绍一下步进电机的工作原理,图1. 1是磁阻式步进电机工作原理的示意图。它的定子上有六个
    发表于 03-30 16:53 8615次阅读
    步进电机的<b class='flag-5'>工作原理</b>

    光栅的工作原理

    光栅的工作原理 常见光栅的工作原理都是根据物理上莫尔条纹的形成原理进行工作的。图4-9是其工作原理图。当使指示光栅上的线纹与标尺光栅上的线纹
    发表于 05-06 23:23 2.2w次阅读
    光栅的<b class='flag-5'>工作原理</b>

    串行端口工作原理

    串行端口工作原理 串行端口工作原理 9针连
    发表于 07-24 00:21 1845次阅读

    BIOS工作原理

    BIOS工作原理 BIOS简介 BIOS工作原理
    发表于 07-26 12:32 5782次阅读

    声卡的工作原理

      声卡的工作原理 声卡的工作原理:声卡的工作原理其实很简
    发表于 12-21 14:18 1954次阅读

    控系统的工作原理是什么?

    控系统的工作原理是什么? 控系统的工作原理   中央控制系统采用多机通讯技术和系统集成技术,
    发表于 02-11 15:26 1387次阅读

    电冰箱的工作原理

    本内容介绍了电冰箱的工作原理,电冰箱致冷的原理和种类,家用冰箱空调的工作原理,电冰箱的工作原理
    发表于 05-14 16:15 7.7w次阅读
    电冰箱的<b class='flag-5'>工作原理</b>

    AGV的工作原理、控制方式及应用

    AGV的工作原理、控制方式及应用AGV的工作原理、控制方式及应用
    发表于 12-18 16:31 151次下载

    光耦的工作原理

    光耦的工作原理 光耦的工作原理 光耦的工作原理
    发表于 12-25 15:10 0次下载

    逆变器工作原理视频

    本文以逆变器的工作原理为中心而展开的话题阐述,分别介绍了全控型逆变器工作原理和半控型逆变器工作原理
    的头像 发表于 08-02 16:02 5w次阅读