メモリリークをClaudeと調査する
メモリリークは「動いているのになぜか遅くなる」という厄介な問題です。原因特定に何時間も費やした経験がある方も多いでしょう。Claude Codeを活用すれば、診断から修正までのサイクルを大幅に短縮できます。
ヒープダンプをClaudeに渡して原因を特定する
Section titled “ヒープダンプをClaudeに渡して原因を特定する”まず Node.js でヒープスナップショットを取得しましょう。
node --inspect your-app.js# Chrome DevTools で "Take heap snapshot" を実行、またはnode -e "const v8 = require('v8');const fs = require('fs');const snap = v8.writeHeapSnapshot();console.log('Snapshot written to:', snap);"取得した .heapsnapshot ファイルの内容、またはメモリ使用量のログをそのまま Claude Code に貼り付けて、次のように聞いてみてください。
このヒープスナップショットのサマリーです。RetainedSize が大きいオブジェクトを中心に、メモリリークの原因として疑わしい箇所を教えてください。
[ログやスナップショットの内容をここに貼る]Claude は「どのオブジェクトが GC されずに残っているか」「どのクロージャが参照を保持しているか」を読み解いてくれます。
疑わしいコードを直接レビューさせる
Section titled “疑わしいコードを直接レビューさせる”原因箇所が絞り込めたら、該当コードを Claude Code に渡してレビューを依頼します。たとえばイベントリスナーの解除漏れはよくある原因のひとつです。
// 問題のあるコード例class DataPoller { start() { this.interval = setInterval(() => { this.fetchData(); }, 1000); window.addEventListener('resize', this.handleResize); // ❌ stop() でリスナーを解除していない }
stop() { clearInterval(this.interval); // window.removeEventListener が抜けている }}このコードを貼り付けて「メモリリークの観点でレビューして、修正版を提示してください」と伝えるだけで、removeEventListener の追加や WeakRef の活用など、具体的な修正案を提案してくれます。
修正後の効果をモニタリングで確認する
Section titled “修正後の効果をモニタリングで確認する”修正を適用したら、Claude Code に計測用のスクリプト作成も依頼しましょう。
// Claude が生成したメモリ監視スニペット例const used = () => process.memoryUsage().heapUsed / 1024 / 1024;const baseline = used();
setInterval(() => { const current = used(); const diff = (current - baseline).toFixed(2); console.log(`Heap: ${current.toFixed(2)} MB (diff: ${diff} MB)`);}, 5000);このスクリプトを実行しながらアプリを動かし、ヒープ使用量が横ばいで安定していれば修正成功です。まだ増加傾向が見られる場合は、ログをそのまま Claude に渡して次の仮説を立てましょう。「診断 → コードレビュー → 修正 → 計測」のサイクルを Claude と一緒に回すことで、メモリリーク調査の苦労を大きく減らせます。