Skip to content

原文(日本語に翻訳)

完了したタスク状態オブジェクトがAppStateから削除されないメモリリークを修正しました。

原文(英語)

Fixed memory leak where completed task state objects were never removed from AppState

概要

Claude Codeのアプリケーション状態管理(AppState)において、完了したタスクの状態オブジェクトがメモリから解放されない問題が修正されました。多数のタスクを実行するセッションでは、この問題によりセッション中のメモリ使用量が増え続けていました。この修正により、長時間のセッションでもメモリ使用量が安定します。

基本的な使い方

この修正は自動的に適用されます。特別な設定は不要です。長いセッションや多数のタスクを実行する場合に効果が現れます。

bash
# 多数のタスクを実行するセッション
claude

# 多くのコマンドを実行しても、完了したタスクのメモリが解放される
> ファイルを読んで分析して
> テストを実行して
> コードを修正して
> 再びテストを実行して
# ... 長いセッション全体でメモリが安定

実践例

ユースケース1: 長時間の対話セッション

長時間にわたって多数の操作を行うセッションでの改善。

bash
# 1時間以上のセッションでも安定動作(修正後)
claude

> 100個のファイルを順番に分析して
# 各ファイルの分析が完了するたびにメモリが解放される
# → メモリが蓄積せず安定して動作

> 次のタスク: テストスイートを実行して問題を修正して
# 前のタスクのメモリは解放済み

ユースケース2: 自動化されたバッチ処理

スクリプトから多数のClaudeタスクを実行する場合。

bash
#!/bin/bash
# batch-process.sh

# 多数のファイルを処理(各タスク後にメモリが解放される)
for file in src/**/*.ts; do
  claude -p "このファイルの型エラーを修正して: $file"
  echo "Processed: $file"
done

ユースケース3: ヘッドレスモードでの連続実行

-p フラグを使った非インタラクティブモードで連続実行する場合。

bash
# 多数のプロンプトを連続で処理
tasks=(
  "コードベースを分析して"
  "テストを実行して"
  "ドキュメントを更新して"
  "セキュリティ診断を実行して"
)

for task in "${tasks[@]}"; do
  claude -p "$task"
  # v2.1.50以降: 各タスクの状態がメモリから解放される
done

注意点

  • この修正はAppState内のタスク状態に関するものです。エージェントチームのメモリリーク(別の修正)とは異なる問題です。
  • 短いセッションや少数のタスクでは効果がほとんどありません。長時間・多数のタスクを実行する場合に顕著な改善が見られます。
  • メモリ解放のタイミングはタスク完了後の次の処理サイクルになります。
  • この修正と合わせてv2.1.50では複数のメモリリーク修正が行われており、相乗効果でメモリ効率が大幅に改善されています。

関連情報