关于 memory-leak-detection
帮助开发者识别和修复内存泄漏的排查指南,适用于内存持续增长、OOM 错误或性能下降等情况。包含 Node.js 和 Python 的分析参考。
主要功能
- 01使用 Node.js 堆快照
- 02识别常见内存泄漏模式
- 03使用中间件检测泄漏
- 04进行 Python 内存分析
- 05通过 WeakMap 和 WeakRef 管理缓存
适用场景
- 01排查持续增长的内存占用
- 02诊断 OOM 错误
- 03调查性能下降
- 04监控生产环境内存
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill memory-leak-detection安装后在 Claude Code 中输入/memory-leak-detection确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/common-memory-leak-patterns.mdmemory-leak-detection-middleware.mdmemory-monitoring-in-production.mdnodejs-heap-snapshots.mdpython-memory-profiling.mdweakmapweakref-for-cache.mdscripts/validate-config.shtemplates/config-starter.yaml详细介绍
内存泄漏检测
目录
概述
识别并修复内存泄漏,防止内存耗尽导致崩溃,并优化应用性能。
适用场景
- 内存使用量随时间持续增长
- 内存耗尽(OOM)错误
- 性能下降
- 容器重启
- 内存消耗过高
快速入门
最简可运行示例:
import v8 from "v8";
import fs from "fs";
class MemoryProfiler {
takeSnapshot(filename: string): void {
const snapshot = v8.writeHeapSnapshot(filename);
console.log(`Heap snapshot saved to ${snapshot}`);
}
getMemoryUsage(): NodeJS.MemoryUsage {
return process.memoryUsage();
}
formatMemory(bytes: number): string {
return `${(bytes / 1024 / 1024).toFixed(2)} MB`;
}
printMemoryUsage(): void {
const usage = this.getMemoryUsage();
console.log("Memory Usage:");
console.log(` RSS: ${this.formatMemory(usage.rss)}`);
console.log(` Heap Total: ${this.formatMemory(usage.heapTotal)}`);
console.log(` Heap Used: ${this.formatMemory(usage.heapUsed)}`);
console.log(` External: ${this.formatMemory(usage.external)}`);
// ... (see reference guides for full implementation)
参考指南
references/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| Node.js 堆快照 | Node.js 堆快照 |
| 内存泄漏检测中间件 | 内存泄漏检测中间件 |
| 常见内存泄漏模式 | 常见内存泄漏模式 |
| Python 内存分析 | Python 内存分析 |
| 用于缓存的 WeakMap/WeakRef | 用于缓存的 WeakMap/WeakRef |
| 生产环境中的内存监控 | 生产环境中的内存监控 |
最佳实践
✅ 应该做
- 使用完毕后移除事件监听器
- 清除定时器和间隔计时器
- 使用 WeakMap/WeakRef 实现缓存
- 限制缓存大小
- 在生产环境中监控内存
- 定期进行性能分析
- 测试后进行清理
❌ 不应该做
- 创建循环引用
- 不必要地持有大型对象的引用
- 忘记清理资源
- 忽视内存增长
- 对象缓存不使用 WeakMap
评论
支持 Markdown