Facebook 开源框架,用于检测 JavaScript 中的内存泄漏

Facebook(在俄罗斯联邦被禁止)开放了memlab工具包的源代码,旨在分析动态分配内存(堆)的状态切片,确定优化内存管理的策略,并识别在执行代码时发生的内存泄漏JavaScript。 该代码在 MIT 许可证下开放。

创建该框架是为了分析使用网站和 Web 应用程序时内存消耗高的原因。 例如,memlab 用于分析使用新版本 Facebook.com 网站时的内存消耗情况,从而可以识别由于可用内存耗尽而导致客户端浏览器崩溃的泄漏。

执行 JavaScript 代码时内存泄漏的原因可能是隐藏的对象引用(阻止垃圾收集器释放对象占用的内存)、不明智的值缓存或在不驱逐旧列表元素的情况下实现无限滚动。 例如,在 Chrome 中的以下代码中,由于对象“obj”而发生内存泄漏,尽管它被分配了 null 值,因为 Chrome 存储了对输出对象的内部引用,以便以后在 Web 控制台中检查。 var obj = {}; 控制台.log(obj); 对象=空;

memlab的主要特点:

  • 检测浏览器中的内存泄漏。 Memlab 允许您自动比较动态内存状态快照、检测内存泄漏并聚合结果。
  • 用于堆迭代的面向对象 API,允许您实现自己的泄漏检测算法并实现用于分析堆状态快照的系统。 基于 Chromium 引擎的浏览器以及 Node.js、Electron 和 Hermes 平台都支持堆分析。
  • 用于寻找优化内存使用机会的命令行界面和 API。
  • Node.js 的断言系统,允许您创建单元测试并运行基于 Node.js 的程序来创建您自己的状态切片、测试您的内存或编写扩展断言检查。

来源: opennet.ru

添加评论