Skip to content

原文(日本語に翻訳)

長いセッション(約 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 の対話型コマンドラインインターフェイスです

関連情報