Skip to content

原文(日本語に翻訳)

長時間セッションにおいて、シェルコマンド完了後にストリームリソースがクリーンアップされないメモリリークを修正

原文(英語)

Fixed memory leak in long-running sessions where stream resources were not cleaned up after shell commands completed

概要

Claude Code v2.1.14では、シェルコマンド実行後のストリームリソース管理に関するメモリリークが修正されました。以前のバージョンでは、Bashコマンドを実行するたびにストリーム(標準出力、標準エラー出力など)のリソースが適切に解放されず、長時間のセッションでメモリ使用量が徐々に増加していました。この修正により、コマンド実行後にリソースが確実にクリーンアップされ、長時間セッションでも安定して動作するようになりました。

影響を受けていた動作

修正前(バグあり)

  • Bashコマンドを実行するたびにメモリが少しずつリーク
  • 長時間セッション(数時間〜1日)でメモリ使用量が数GB に到達
  • 最終的にシステムメモリ不足やクラッシュが発生
  • 特に以下のような使い方で顕著:
    • 頻繁にコマンドを実行する開発フロー
    • CI/CD環境での長時間実行
    • 大量のログ出力を伴うコマンド

修正後(v2.1.14以降)

  • コマンド完了時にストリームリソースが適切に解放
  • 長時間セッションでもメモリ使用量が安定
  • 数日間の連続使用でも問題なし
  • パフォーマンスの劣化がない

実践例

長時間の開発セッション

一日中Claude Codeを使い続ける場合でも安定:

bash
# 朝から晩まで何百回もコマンド実行
! npm test
! npm run build
! git status
! docker ps
# ... 数時間後も安定動作

修正前は数時間でメモリが肥大化しましたが、修正後は安定して動作します。

CI/CD環境での長時間実行

GitHub Actionsなどで長時間ジョブを実行:

yaml
# 数十分〜数時間かかるビルド&テストジョブ
- run: |
    claude -p "Run full test suite"
    claude -p "Generate coverage reports"
    claude -p "Build production artifacts"
    claude -p "Run integration tests"

修正前はメモリリークでジョブが失敗することがありましたが、修正後は安定して完了します。

ログ監視タスク

大量のログ出力を伴うコマンドでも安定:

bash
# 大量のログを出力するコマンド
! npm run test:verbose
! docker logs mycontainer --tail 10000
! git log --all --graph --decorate

修正前はストリームバッファがリークしましたが、修正後は適切にクリーンアップされます。

バックグラウンドタスクとの組み合わせ

バックグラウンドで複数のコマンドを実行:

bash
# 複数のウォッチャーをバックグラウンド起動
! npm run watch &
! npm run dev-server &
! npm run test:watch &

# メインの作業を継続
"アプリケーションに新機能を追加してください"

修正前は各バックグラウンドタスクのストリームがリークしましたが、修正後は適切に管理されます。

注意点

  • ストリームとは:コマンドの標準出力(stdout)、標準エラー出力(stderr)など、データの入出力に使用されるリソース
  • メモリリークの症状:徐々にメモリ使用量が増加し、最終的にクラッシュする現象
  • 長時間セッション推奨:修正後は長時間セッションでも安定しますが、定期的に/clearでセッションをリセットすることも良い習慣です
  • リソース監視htopActivity Monitorなどでメモリ使用量を監視できます
  • 他のメモリリーク:この修正はストリームリソースに関するものです。他の原因によるメモリ増加がある場合は別途報告してください
  • バックグラウンドタスク:バックグラウンドタスクのストリームも適切にクリーンアップされます

関連情報