Skip to content

原文(日本語に翻訳)

長いセッションで React Compiler の memoCache に古いメッセージ配列バージョンが蓄積していたメモリリークを修正しました

原文(英語)

Fixed a memory leak where old message array versions accumulated in React Compiler memoCache over long sessions

概要

Claude Code の UI は React で実装されており、React Compiler の最適化機能(memoCache)を使用しています。しかし、長いセッションで会話が続くと、メッセージ配列の古いバージョンが memoCache から解放されずに蓄積し、メモリリークが発生していました。これにより長時間使用するとメモリ消費量が増加し続ける問題がありました。修正後は古いメッセージ配列が適切に memoCache から削除され、メモリが安定します。

基本的な使い方

この修正は自動的に適用されます。長時間のセッションでのメモリ消費が改善されます。

bash
# 長いセッションでもメモリが安定して動作する
claude
# 何百ターンも会話を続けてもメモリが増大しない(修正後)

実践例

メモリリークの影響

修正前(長時間セッションでのメモリ推移):
- 開始時: ~150MB(UI 含む)
- 100ターン後: ~300MB
- 500ターン後: ~800MB
- 1000ターン後: ~2GB 以上(ブラウザ/ElectronがOOMになることも)

修正後:
- 開始時: ~150MB
- 100ターン後: ~160MB(安定)
- 500ターン後: ~170MB(安定)
- 1000ターン後: ~180MB(安定)

メモリ使用量の確認(開発者向け)

javascript
// 開発者ツールで確認する場合
// Chrome/Electron の開発者ツール → Performance → Memory

// ヒープスナップショットを取得して比較
// 修正後: 長時間セッションでもヒープが増大しない

影響が大きいユースケース

bash
# 長時間のリファクタリングセッション
claude
> プロジェクト全体のコードをモダンな TypeScript に移行して
# → 何百ものファイルを編集する長いセッション
# 修正後: メモリが安定して最後まで完了できる

# 大規模なコードレビューセッション
claude
> このリポジトリのすべてのファイルをレビューして問題を指摘して
# 修正後: セッション中のメモリが安定

注意点

  • この修正は React Compiler を使用している Claude Code の UI に関するものです
  • CLI のみを使用している場合(VS Code の拡張機能ではなく)でも UI コンポーネントが存在するため恩恵があります
  • 他のメモリリーク修正(REPL レンダースコープ、フックイベントなど)と合わせて全体的なメモリ効率が改善されます
  • React Compiler は React の最適化コンパイラで、メモ化の自動最適化を行います

関連情報