Meta开源MemLab JavaScript内存泄露检测器


CCDS
CCDS 2022-09-16 14:27:28 52288
分类专栏: 资讯
Facebook母公司Meta刚刚宣布了开源MemLab,该工具可在Chromium内核浏览器上,查找JavaScript应用程序中的内存泄露。Facebook工程团队指出:“使用我公司网络应用程序的人们,通常会立即留意到性能与功能正确性问题。但对于内存泄露,其隐蔽性就远不在同一水平线上了。取而代之的是,用户会得到一个响应性逐渐降低的会话”。内存泄漏的后果在单页应用程序(SPA)中更为严重,因为用户可能会在较长时间内继续与页面交互,而MemLab就是专为这种场景而设计的。如上图所示,MemLab的工作原理如下:(1)导航到页面并返回;(2)查找未释放的对象;(3)显示泄露追踪结果。创建场景,并将文件保存到~/memlab/scenarios/detached-dom.js路径。据悉,MemLab使用了一个名为“Puppeteer”的Node.js库。它可以控制GoogleChrome或其它基于Chromium内核打造的浏览器,且默认情况下以headless模式运行(方便命令行交互)。Facebook工程师解释称,MemLab的工作方式就是导航到一个页面、然后离开。正常情况下,可预计该页面分配的大部分内存也将被释放。但若没有,则意味其存在极高的内存泄露可能性。MemLab拥有一些特定于框架的知识(尤其是React),这是由Facebook团队打造的框架、现也主导着JavaScript的开发。运行MemLab(或需几分钟)React使用存储在树结构中、被称作Fibers的对象,来表示内存中的浏览器文档对象模型(DOM)。据该团队所述,这可能是存在“巨大内存泄露”的一个主要原因。拥有强连接图的缺点很是显著,若有任何外部引用指向图的任何部分,就无法对整个图开展垃圾回收。MemLab的另一特性,就是提供了JavaScript堆的图形视图、启用了用于检查堆快照的API。这意味着开发者能够编写开展内存断言的测试,例如声明某个对象将不再存在于内存中。此外有一个用于查找重复字符串实例的工具,在某个案例中,团队发现字符串占用了70%的堆、且其中半数至少有一个重复的实例。3-调试泄露追踪包括Chrome、Edge、Firefox在内的浏览器,都有附带内存检查工具。但正如以为开发者在HackerNews上吐槽的那样——这些开发工具难以在调试过程中揪出内存泄露的问题。安装方面,MemLab不仅可以通过npm包管理器、还可从git存储库进行构建。不过Windows平台必须使用GitBash,否则会在构建时遭遇失败。然后开发者可以运行MemLab,将其传递给JavaScript文件中定义的场景。最后,MemLab的另一项强大功能,就是可以在测试期间作为命令过程的一部分而运行。这意味着如果代码中引入了严重的泄露,开发者们也能够在投入生产环境前加以捕获。(举报)

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=525
赞同 0
评论 0 条
CCDSL0
粉丝 0 发表 8 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2935
【软件正版化】软件正版化工作要点  2854
统信UOS试玩黑神话:悟空  2811
信刻光盘安全隔离与信息交换系统  2702
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1235
grub引导程序无法找到指定设备和分区  1205
点击报名 | 京东2025校招进校行程预告  162
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  160
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  156
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  154
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!