memory-leak-detection について
メモリリークの特定と修正を支援する開発者向けガイドです。メモリ使用量の増加、OOM、性能低下などを扱い、Node.jsとPythonの分析資料を含みます。
主な機能
- 01Node.jsのヒープスナップショット
- 02一般的なリークパターンの特定
- 03ミドルウェアによるリーク検出
- 04Pythonのメモリプロファイリング
- 05WeakMapとWeakRefによるキャッシュ管理
活用シーン
- 01増え続けるメモリ使用量の調査
- 02OOMエラーの診断
- 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 対応