SuperAPI AI 工具集

memory-leak-debugging

测试与质量

查看项目

更新于 10-15 17:34

技能介绍

用途:在用户报告高内存占用、OOM 错误,或需要捕获、对比、检查堆快照时,协助在 JavaScript/Node.js 应用中查找、诊断并修复内存泄漏。

前提:compare_heapsnapshots、get_heapsnapshot_details 等高级内存调试工具仅在服务器以 --memoryDebugging 标志启动时可用。使用前应确认这些工具是否存在;若不存在,可尝试读取 MCP 配置文件检查是否已启用 --memoryDebugging。

核心原则:优先使用 MCP 内存工具,不要直接读取原始 .heapsnapshot 文件,因为文件极大且会消耗大量 token,应通过 Chrome DevTools MCP 的堆快照工具进行汇总、对比和检查。先判断泄漏位于浏览器端还是 Node.js 端。常见原因包括 detached DOM 节点、未处理的闭包、全局变量、未移除的事件监听以及无界增长的缓存;detached DOM 节点有时是刻意缓存,置空前应先询问用户。调查结束后对每个已加载快照调用 close_heapsnapshot 释放 MCP 服务器占用的内存。

工作流程:捕获快照时,可用 click、navigate_page、fill 等页面级工具(指定 pageId)将页面置于目标状态,交互后恢复原状观察内存是否释放,并重复同一用户交互 10 次放大泄漏;用 take_heapsnapshot(带 pageId)在基线、目标(操作后)和最终(还原操作后)状态保存 .heapsnapshot 文件。对比快照时,先用 get_heapsnapshot_summary 确认文件可加载并比较总体数据,再用 compare_heapsnapshots 对比基线与目标,先不带 classIndex 查看汇总差异,再对可疑增长指定 classIndex 获取详细类差异,之后才深入具体节点 ID。检查保留链与支配树时,用 get_heapsnapshot_class_nodes 列出可疑类实例,用 get_heapsnapshot_retainers、get_heapsnapshot_retaining_paths、get_heapsnapshot_dominators、get_heapsnapshot_edges 理解代表节点为何仍可达,用 get_heapsnapshot_object_details(指定 nodeId)获取大小、类型、距离和 DOM 分离状态等元数据,字符串增长占主导时用 get_heapsnapshot_duplicate_strings;当保留路径指向应用代码后,可阅读 references/common-leaks.md 了解常见泄漏与修复方法。高级分析与分类过滤:使用 get_heapsnapshot_details 或 get_heapsnapshot_class_nodes 并配合 filterName 定位常见泄漏类别,如 objectsRetainedByDetachedDomNodes、objectsRetainedByEventHandlers、objectsRetainedByContexts、objectsRetainedByConsole。

限制:资料未提供价格、收费、支持平台与部署方式等信息。