Skip to content

facebook/memlab

⭐ 4,964  ·  #7  ·  JavaScript

A framework for finding JavaScript memory leaks and analyzing heap snapshots

JavaScript detector e2e facebook Memory

项目分析

🎯 定位持久记忆系统
💡 核心价值解决 AI Agent 每次对话都从零开始的问题。通过文件存储、数据库或向量检索等方式,让 Agent 拥有跨会话的持久记忆,记住用户偏好、项目上下文和历史决策
👥 适合谁需要 Agent 保持长期上下文的开发者,比如项目管理、大型代码库熟悉等场景

为什么值得关注

4,964 Stars,处于快速增长阶段,值得早期关注。使用 JavaScript 开发。

自动化定位JS内存泄漏与堆快照分析框架。

核心功能

  • 自动泄漏检测:通过e2e测试场景回放,自动捕获并对比堆快照,识别未被GC回收的对象。
  • 堆快照深度分析:提供结构化API(如HeapAnalysis)遍历V8/Hermes堆图,支持自定义查询匹配泄漏模式。
  • 浏览器与Node.js双端支持:可对接Puppeteer/Playwright驱动Chrome,也可直接分析Node.js进程堆。
  • Hermes引擎兼容:专为React Native的Hermes引擎优化,支持其堆快照格式。
  • 可视化与导出:生成泄漏对象保留路径图,支持JSON格式快照导出供二次分析。

技术架构

  • 语言与运行时:纯TypeScript/JavaScript实现,依赖Node.js执行核心分析逻辑。
  • 堆处理引擎:基于V8堆快照协议(.heapsnapshot)和Hermes快照格式,构建内存图模型。
  • 代码结构亮点
    • 模块化分析管线:SnapshotHeapNodeEdgeAnalyzer,支持插件式自定义分析器。
    • 测试驱动设计:内置memlab test命令,将泄漏检测与E2E测试流程耦合。
    • CLI与API分离:提供memlab命令行工具和编程式memlab npm包。

快速上手指南

bash
# 安装
npm install -g memlab

# 对指定URL执行泄漏检测(自动打开浏览器)
memlab test --scenario "https://example.com"

# 分析本地堆快照
memlab analyze /path/to/heap.heapsnapshot

# 编程式使用(Node.js)
import { takeHeapSnapshot, diffHeapSnapshots } from 'memlab';
const snap1 = takeHeapSnapshot();
// ... 执行操作 ...
const snap2 = takeHeapSnapshot();
const leaks = diffHeapSnapshots(snap1, snap2);

优劣势与适用场景

优势

  • 自动化程度高:无需手动录制堆快照,集成E2E测试即可持续监控。
  • 分析深度强:支持自定义对象匹配规则,可发现闭包、DOM引用等复杂泄漏。
  • 社区背书:Facebook/Meta维护,与React Native生态深度绑定。

劣势

  • 学习曲线:需要理解V8堆图概念(节点、边、保留路径),非直观。
  • 性能开销:大型堆快照(>500MB)分析耗时较长,不适合线上实时监控。
  • 平台限制:仅支持V8和Hermes引擎,无法用于JSC或其他JS引擎。

适用场景

  • 前端团队:React/React Native应用内存泄漏排查。
  • 性能工程师:E2E测试流水线中嵌入内存回归检测。
  • Node.js后端:长期运行服务(如微服务)的堆分析。

社区与热度

  • Stars:4,964(截至2026年5月),呈稳定增长趋势,在内存分析工具中属头部。
  • Fork:约300+,活跃贡献者以Meta内部开发者为主,外部PR较少。
  • 近期更新:2026年5月仍有提交(如Hermes快照兼容性修复),但核心API自2024年起未大改,趋于成熟稳定。
  • Issues:约100+ open,以功能请求和Hermes特定问题为主,响应速度中等(1-2周)。

技术信息

  • 💻 语言: JavaScript
  • 📂 Topics: detector, e2e, facebook, heap, hermes
  • 🕐 更新: 2026-02-21
  • 🔗 访问 GitHub 仓库

数据更新于 2026-03-21 · Stars 数以 GitHub 实际数据为准

热点项目数据来自 GitHub API,实时更新