Meta发布内部开发以增加网页应用程序稳定性,大幅减少50%网页OOM崩溃的JavaScript内存泄露侦测工具MemLab。MemLab为一个自动侦测内存泄露的JavaScript内存测试框架,能够找到并解决内存泄露的根本原因,改善网页应用程序品质提高用户的使用体验。
Meta在2020年的时候,将Facebook.com重新设计成单页应用程序,而该应用程序大部分的渲染和导航,皆使用客户端JavaScript,同样Meta也用类似的架构设计包括Instagram和Workplace等其他网页应用程序,但Meta提到,这种架构虽然可以提供用户更顺畅的互动体验,使网页更有应用程序的感觉,但在客户端维护网页应用程序的状态,会让管理客户端内存的工作变得复杂。
通常用户可以立刻发现应用程序的功能错误或是性能问题,而内存泄露并不会被立刻发现,但是会因为每次占用一块内存,在累计之后,导致整个网页应用程序在后续逐渐变慢。
之前Meta分析Facebook.com的内存使用,发现客户端的内存使用量,以及OOM崩溃的次数,皆持续攀升,而根据他们的研究,高内存使用量带来许多负面影响,包括降低页面加载和互动性能,并且进一步影响各项用户参与指标。
官方提到,事实上内存泄露通常不明显,因此也很难在开发过程或程序代码审查的时候被发现,甚至很难在生产环境中找到根本原因,虽然主流的JavaScript Runtime都有垃圾回收器,但是内存泄露仍可能存在,JavaScript程序代码会因为隐藏对象参照而出现内存泄露,且会在许多意想不到的地方出现。
或是在部分情况下,以技术上来说并不属于内存泄露,只是因为应用程序内存使用线性增长没有被限制,Meta表示,这种情况最常发生的原因,是客户端缓存没有内置驱逐逻辑,无限卷动列表没有虚拟化功能,因此无法在添加新内容时,从列表删除较早的项目。
过去Meta并没有自动化系统和流程来控制内存使用,因此要降低内存使用和泄露,就只能定期请专家通过Chrome DevTools来挖掘内存泄露的问题,但因为现在应用程序更改的次数非常频繁,导致这个办法没有办法扩大规模执行。
因此Meta创建了MemLab来解决这个问题,JavaScript内存测试框架MemLab能够自动进行泄露侦测,使开发者更容易发现内存泄露的根本原因,Meta成功控制失控的内存增长问题,不只发现更多产品和基础设施中内存泄露的情况,也找到许多内存优化的机会。
现在Meta已经在GitHub上开源MemLab,并希望与JavaScript社群合作,而其他开发者也已经能够下载MemLab,改进应用程序内存使用。
领取专属 10元无门槛券
私享最新 技术干货