原文(日本語に翻訳)
長時間の SDK/CCR セッションで会話メッセージが不必要に保持されていたメモリリークを修正しました
原文(英語)
Fixed memory leak in long-running SDK/CCR sessions where conversation messages were retained unnecessarily
概要
Claude Code SDK または Claude Code Remote(CCR)を使用した長時間のセッションで、会話メッセージが処理後も不必要にメモリに保持され続けるメモリリークがありました。セッションが長くなるほどメモリ消費量が増加し、最終的にはパフォーマンス低下やメモリ不足になる可能性がありました。修正後は、不要になった会話メッセージが適切にガベージコレクションされ、長時間セッションでもメモリ消費量が安定します。
基本的な使い方
この修正は自動的に適用されます。SDK/CCR を使った長時間セッションでのメモリ消費が改善されます。
javascript
// SDK を使った長時間セッション
// 修正後: メモリが正しく解放される
const claude = new Claude();
await claude.run(async (session) => {
for (let i = 0; i < 1000; i++) {
await session.send("次のタスクを実行してください...");
// 修正後: 古いメッセージが GC される
}
});実践例
SDK を使った自動化スクリプトでの影響
javascript
// 長時間の自動化スクリプト例
const { Claude } = require('@anthropic-ai/claude-code');
async function processFiles(files) {
const claude = new Claude();
await claude.run(async (session) => {
for (const file of files) {
// 各ファイルを処理
const result = await session.send(`${file} を分析してください`);
console.log(result);
// 修正前: 各ターンのメッセージが蓄積し続けた
// 修正後: 不要なメッセージは GC され、メモリが安定
}
});
}
// 1000個のファイルを処理する場合など
processFiles(largeFileList);メモリ消費の比較
修正前(1000ターンのセッション):
- 開始時: ~50MB
- 500ターン後: ~500MB
- 1000ターン後: ~1GB
- メモリ不足でクラッシュすることも
修正後(1000ターンのセッション):
- 開始時: ~50MB
- 500ターン後: ~60MB(安定)
- 1000ターン後: ~65MB(安定)CCR(Claude Code Remote)での使用
bash
# CCR セッションでも同様にメモリが効率的に管理される
# 長時間の CI/CD パイプラインでも安定動作
# GitHub Actions 等での使用例
- name: Claude Code で自動レビュー
uses: anthropics/claude-code-action@v1
with:
task: "すべての変更ファイルをレビューしてください"
# 修正後: 長時間の処理でもメモリが安定注意点
- この修正は SDK および CCR(Claude Code Remote)を使用するケースに特に効果があります
- 通常の対話型 CLI 使用でも同様の改善が適用されます
- メモリ消費の改善により、長時間の自動化タスクがより安定して実行できます
/compactや自動コンパクション機能との組み合わせでさらに効果的です