Skip to content

原文(日本語に翻訳)

メモリリークを修正しました:長期セッションで仮想スクローラーがメッセージリストの過去のコピーを数十個保持していた問題を修正しました。

原文(英語)

Fixed a memory leak where long sessions retained dozens of historical copies of the message list in the virtual scroller

概要

長時間にわたるClaude Codeのセッションで、仮想スクローラーコンポーネントがメッセージリストの過去のコピーを大量に保持し続けるというメモリリークが発生していました。このアップデートにより、不要になったメッセージリストのコピーが適切に解放されるようになり、長期セッションでのメモリ使用量が大幅に改善されました。

基本的な使い方

bash
# このバグ修正はユーザーが特別な操作をする必要はありません
# 長期セッションでのパフォーマンスが自動的に改善されます

# パフォーマンスが改善される状況:
# - 数時間にわたる長期セッション
# - 多数のツール呼び出しを含むセッション
# - 大量のメッセージを含む会話

実践例

長期セッションのパフォーマンス監視

bash
# Claude Codeの実行中のメモリ使用量を確認(macOS)
# 修正前: 長期セッションでメモリが増え続ける
# 修正後: メモリ使用量が安定する

# プロセスIDを取得
CLAUDE_PID=$(pgrep -f "claude-code" | head -1)

# メモリ使用量を監視
while true; do
  if [ -n "$CLAUDE_PID" ]; then
    mem=$(ps -o rss= -p $CLAUDE_PID)
    echo "$(date): Memory: ${mem}KB"
  fi
  sleep 30
done

長期プロジェクトでの安定した使用

bash
# 大規模なコードベースを扱う長期セッション
# 修正により、長時間の作業でも安定したパフォーマンスが維持される

# セッション開始
claude

# 多数のファイルを分析する長期作業
# - ファイルの読み込み
# - コードの生成
# - テストの実行
# - デバッグ
# → メモリリーク修正により、これらの作業を通じてメモリ使用量が安定

メモリ使用量の最適化設定

json
// .claude/settings.json
// メモリ最適化に関連する設定
{
  "contextWindow": {
    "maxTokens": 100000,
    "compactThreshold": 0.8
  }
}
bash
# 長期セッションでのベストプラクティス
# 1. 定期的に /compact を使ってコンテキストを圧縮
/compact

# 2. 不要になったセッションは終了する
# Ctrl+D または exit

# 3. 非常に長い会話は --continue で再開する代わりに
#    新しいセッションを開始することも検討する
claude --continue  # 前のセッションを継続

パフォーマンステスト

bash
#!/bin/bash
# 長期セッションのパフォーマンステスト

echo "メモリ使用量の測定を開始します..."

# 初期メモリを記録
initial_mem=$(ps -o rss= -p $(pgrep -f claude) 2>/dev/null)
echo "初期メモリ: ${initial_mem}KB"

# 多数のタスクを実行(実際の長期使用をシミュレート)
for i in {1..50}; do
  claude --print "ファイル$i.txt の内容を要約して" > /dev/null
done

# 最終メモリを確認
final_mem=$(ps -o rss= -p $(pgrep -f claude) 2>/dev/null)
echo "最終メモリ: ${final_mem}KB"
echo "差分: $((final_mem - initial_mem))KB"

注意点

  • このメモリリーク修正は、長期セッション(数時間以上)で特に効果が現れます
  • 短期セッションではほとんど影響が感じられない場合があります
  • メモリ使用量が過剰に増加していた場合は、このアップデートにより改善されます
  • 依然としてメモリ使用量の問題が続く場合は、定期的な /compact コマンドの使用を検討してください
  • 仮想スクローラーのメモリ管理が改善されましたが、他のメモリ使用要因は存在します

関連情報