mcpField
M
memory-leak-detection

memory-leak-detection

github.com/aj-geddes开发373583 次安装34 周前更新
代码仓库

关于 memory-leak-detection

帮助开发者识别和修复内存泄漏的排查指南,适用于内存持续增长、OOM 错误或性能下降等情况。包含 Node.js 和 Python 的分析参考。

主要功能

  1. 01使用 Node.js 堆快照
  2. 02识别常见内存泄漏模式
  3. 03使用中间件检测泄漏
  4. 04进行 Python 内存分析
  5. 05通过 WeakMap 和 WeakRef 管理缓存

适用场景

  1. 01排查持续增长的内存占用
  2. 02诊断 OOM 错误
  3. 03调查性能下降
  4. 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.md
memory-leak-detection-middleware.md
memory-monitoring-in-production.md
nodejs-heap-snapshots.md
python-memory-profiling.md
weakmapweakref-for-cache.md
scripts/
validate-config.sh
templates/
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