原文(日本語に翻訳)
長いセッション(約 1000 ターンで〜35MB)で REPL のレンダースコープが蓄積していたメモリリークを修正しました
原文(英語)
Fixed a memory leak where REPL render scopes accumulated over long sessions (~35MB over 1000 turns)
概要
Claude Code の REPL(対話型セッション)環境では、各ターンのレンダー処理に使用されるスコープオブジェクトが適切に解放されず、セッションが進むにつれて約 35MB/1000ターン のペースでメモリが蓄積するリークがありました。修正後は各ターンのレンダースコープが使用後に正しく解放され、長時間セッションでのメモリ消費が改善されます。
基本的な使い方
この修正は自動的に適用されます。長時間の対話セッションでのメモリ効率が向上します。
bash
# 長時間の対話セッションでもメモリが安定
claude
# 1000 ターン以上の長いセッションでも ~35MB 分のメモリが節約される実践例
メモリリークの規模感
修正前のメモリ蓄積:
- 100 ターン: +3.5MB(レンダースコープのリーク)
- 500 ターン: +17.5MB
- 1000 ターン: +35MB
- 5000 ターン: +175MB
他のメモリリーク修正と合わせると合計の改善量は大きくなる
修正後:
- レンダースコープは各ターン終了後に解放
- ターン数によらずメモリが安定長時間セッションでの実際の影響
bash
# 典型的な開発セッション(50ターン)
# → レンダースコープのリーク: 約 1.75MB(ほぼ無視できるレベル)
# 長時間の大規模タスク(1000ターン)
# → 修正前: レンダースコープで 35MB 追加消費
# → 修正後: 0MB(解放される)
# 自動化スクリプトでの多数のターン(10000ターン)
# → 修正前: 350MB 追加消費(顕著な影響)
# → 修正後: 安定したメモリ消費他のメモリリーク修正との組み合わせ効果
2.1.69 で修正された複数のメモリリーク:
1. React memoCache のリーク(本修正)
2. REPL レンダースコープのリーク(本修正)
3. フックイベントの無制限蓄積
4. チームメイトの会話履歴保持
5. SDK/CCR セッションの会話メッセージ保持
これらが合わさって長時間セッションの
メモリ安定性が大きく改善される注意点
- 1000ターン程度の通常のセッションでは 35MB の差は比較的小さいですが、長時間・多数ターンのセッションでは積み重なります
- 他のメモリリーク修正と組み合わさることで全体的な改善効果が大きくなります
- 自動化や CI/CD での長時間実行のユースケースで特に効果があります
- REPL は Claude Code の対話型コマンドラインインターフェイスです