ã¯ããã«
Claude Code v2.1.193ïŒ2026-06-25ïŒã®ãªãªãŒã¹ããŒãã«ããããªäžæã远å ãããŸããã
Added automatic memory-pressure reaping for idle background shell commands (disable with
CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP=1)
ãã¡ã¢ãªãéŒè¿«ããããã¢ã€ãã«ç¶æ
ã®ããã¯ã°ã©ãŠã³ãã·ã§ã«ãèªåçã«çä»ãããæ©èœã§ããé·æéã»ãã·ã§ã³ã§ run_in_background: true ãå€çšããŠãããšãæŸçœ®ããã·ã§ã«ãããããã¡ã¢ãªãé£ã£ãŠããã®ãæ°ã«ãªã£ãŠããã®ã§ãå®éã«ã©ãåãã®ãæå
ã®ãã€ããªãçŽæ¥èª¿ã¹ãŠã¿ãŸããã
ãã®èšäºã§åããããš
- Claude Code CLIãã€ããªã®æ£äœïŒå®è¡ãã¡ã€ã«ã®äžèº«ã
stringsã§ç¢ºèªããçµæïŒ -
memoryPressureãšããæ©èœãäŸåããŠããã€ãã³ãã¯ãå ¬åŒNode.js docsã«ã¯ååšããªãããš - 宿©ã§æ°GBåã®ã¡ã¢ãªã確ä¿ããŠãããã®ã€ãã³ããçºç«ããªãã£ã宿ž¬çµæ
察象èªè
-
run_in_backgroundã§ããã¯ã°ã©ãŠã³ãã·ã§ã«ãå€çšããŠãã人 - Claude Codeã®å éšå®è£ ã«èå³ããã人
åæç°å¢
- å®è¡äžã® Claude Code CLI: 2.1.202ïŒLinux x64ãæ©èœãå ¥ã£ã v2.1.193 ããæ°ãããã«ãïŒ
- æ€èšŒçšã©ã³ã¿ã€ã : ã·ã¹ãã ã«ã€ã³ã¹ããŒã«æžã¿ã® Bun 1.3.11 / Node.js 22.22.2ïŒãã€ããªå èµã®Bunã¯1.4.0ã ããåç¬å®è¡ã§ããªãããè¿ãããŒãžã§ã³ã®Bunã§æ€èšŒïŒ
TL;DR
- Claude Code CLIã®å®è¡ãã¡ã€ã«ã¯ãNode.jsã§ã¯ãªã Bunã§ã³ã³ãã€ã«ãããåäžãã€ã㪠ã ã£ãïŒ
stringsã§Buné¢é£ã®åãèŸŒã¿æååã倿°ç¢ºèªïŒ - èªåãªãŒãã³ã°æ©èœã¯
process.on("memoryPressure", ...)ã«äŸåããŠãããããã®ååã®ã€ãã³ã㯠Node.jså ¬åŒããã¥ã¡ã³ãã«äžåèšèŒããªã - å®éã«BunïŒNode.jsåæ¹ã®ç°å¢ã§æå€§10GBçšåºŠã®Bufferã確ä¿ããŠã¿ããã
memoryPressureã€ãã³ãã¯äžåºŠãçºç«ããªãã£ã
çºèŠã®çµç·¯
claude ã³ãã³ãã®å®äœãã©ãã«ããã確èªãããšããããå§ããŸããã
$ which claude
/opt/node22/bin/claude
$ readlink -f /opt/node22/bin/claude
/opt/claude-code/bin/claude
$ file /opt/claude-code/bin/claude
/opt/claude-code/bin/claude: ELF 64-bit LSB executable, x86-64, ...
/opt/node22/bin/claude ã¯ãã ã®ã·ã³ããªãã¯ãªã³ã¯ã§ãå®äœã¯ /opt/claude-code/bin/claude ãšããçŽ250MBã®åäžELFãã€ããªã§ãããNode.jsã®ã©ã³ã¿ã€ã ãã£ã¬ã¯ããªã®äžã«çœ®ãããŠããã®ã§äžèŠNode.js補ã«èŠããŸãããstrings ã§åãèŸŒã¿æååãèŠããšå°è±¡ãå€ãããŸãã
$ strings /opt/claude-code/bin/claude | grep -iE "bun v[0-9]|bun_version|Bun\.version" | head
Bun v1.4.0 (63bb0ca0d) Linux x64 (baseline)
bun pm version v
bun pack v
bun publish v
...
ããã«ãã£ãŒãããã¯éä¿¡æ©èœã®ã³ãŒãæçã«ã¯ Bun.randomUUIDv7() ã Bun.version ãBun.revision ã®åŒã³åºãããã®ãŸãŸæ®ã£ãŠããŸããããã㯠Bunã® bun build --compile ã§äœãããèªå·±å®çµåãã€ã㪠ã®ç¹åŸŽãã®ãã®ã§ããClaude Code CLIã¯ãNode.jsã§ã¯ãªã Bun 1.4.0 ã®äžã§åããŠããŸãïŒNode.jsã忢±ãã£ã¬ã¯ããªã«çœ®ãããŠããã®ã¯ãClaude CodeããŠãŒã¶ãŒã® node/npm ãåŒã³åºãå Žé¢åãã®ããã§ãïŒã
æ€èšŒ1: èªåãªãŒãã³ã°ã®å®è£ ãèŠã
åããã€ããªã®äžã«ãä»å远å ãããæ©èœã®å®è£ ãèŠã€ãããŸããïŒå€æ°åã¯å§çž®ã»é£èªåãããŠããŸããã該åœããžãã¯ã ãæç²ããŸãïŒã
if (i === void 0 && !mn() && !ke.CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP) {
let a = () => {
// ...ã¢ã€ãã«å€å®ã»æéçµéãã§ãã¯...
xe("task_local_shell_pressure_reap"), /* ã·ã§ã«ãkillããåŠç */
};
process.on("memoryPressure", a);
s = () => process.off("memoryPressure", a);
}
ç°å¢å€æ°åïŒCLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAPïŒã»ãã¬ã¡ããªã€ãã³ãåïŒtask_local_shell_pressure_reapïŒãšããå
¬åŒãªãªãŒã¹ããŒãã®èª¬æãšäžèŽããŠããŸããå®è£
ã¯ç¢ºãã«ååšããŸãããã€ã³ãã¯ããã®åŠçã process.on("memoryPressure", ...) ãšããã€ãã³ããªã¹ããŒã«å®å
šã«äŸåããŠããããšã§ãã
æ€èšŒ2: memoryPressure ã¯Node.jså
¬åŒdocsã«ååšããªã
Node.jså ¬åŒããã¥ã¡ã³ãïŒv26.4.0ïŒã®ãProcess eventsãã»ã¯ã·ã§ã³ã«åæãããŠããã€ãã³ãã¯ä»¥äžã®éãã§ãã
-
'beforeExit'/'disconnect'/'exit'/'message'/'rejectionHandled'/'workerMessage'/'uncaughtException'/'uncaughtExceptionMonitor'/'unhandledRejection'/'warning'/'worker'/ ã·ã°ãã«ç³»ïŒ'SIGINT'ãªã©ïŒ
memoryPressure ã¯ãã®äžèŠ§ã« å«ãŸããŠããŸãããprocess.on() ã¯EventEmitterãªã®ã§ä»»æã®æååãç»é²ã§ããŠããŸããå®éã«äœãããã®ã€ãã³ããçºç«ãããªãéãããªã¹ããŒã¯æ°žä¹
ã«åŒã°ããªãã³ãŒãã«ãªããŸãã
Bunã®ããã»ã¹é¢é£ããã¥ã¡ã³ãã»ããã°èšäºãæ€çŽ¢ããç¯å²ã§ããmemoryPressure ãå
¬åŒAPIãšããŠæèšããèšè¿°ã¯èŠã€ãããŸããã§ããïŒV8ã®å
éšåã蟌ã¿APIã§ãã MemoryPressureNotification ãè¿ãååãšããŠååšããŸãããããã¯Node.js/Bunã®C++å®è£
ãå
éšçã«åŒã³åºãåŽã®APIã§ãJSåŽã«èªå転éãããä¿èšŒã¯ãããŸããïŒã
æ€èšŒ3: å®éã«ã¡ã¢ãªã確ä¿ããŠã€ãã³ãçºç«ã詊ã
ãããã¥ã¡ã³ãã«ç¡ããã ãã§ã¯å®éã«çºç«ãããã¯åãããªãã®ã§ãBunãšsystem Node.jsåæ¹ã§æå³çã«ã¡ã¢ãªãç©ã¿äžããŠã¿ãŸããã
// mp-test.js
let fired = false;
process.on("memoryPressure", () => { fired = true; console.log("FIRED"); });
const chunks = [];
for (let i = 0; i < 200; i++) {
chunks.push(Buffer.alloc(50 * 1024 * 1024)); // 50MBãã€ç¢ºä¿ïŒ200åã§åèš10GBïŒ
if (i % 40 === 0) console.log("allocated MB:", (i + 1) * 50, "fired=", fired);
}
setTimeout(() => console.log("final total MB=", chunks.length * 50, "fired=", fired), 300);
Bun 1.3.11ïŒLinuxïŒã§ã®å®è¡çµæ:
$ bun mp-test.js
allocated MB: 50 fired= false
allocated MB: 2050 fired= false
allocated MB: 4050 fired= false
allocated MB: 6050 fired= false
allocated MB: 8050 fired= false
final total MB= 10000 fired= false
system Node.js 22.22.2ïŒ--max-old-space-size=256 ä»ããBuffer確ä¿ã¯ããŒãå€ãªã®ã§äžéã«é¢ä¿ãªãç©ããïŒã§ããå
šãåãã¹ã¯ãªããã§è©ŠããŸãããçµæã¯åãã§ããã
$ node --max-old-space-size=256 mp-test.js
allocated MB: 50 fired= false
allocated MB: 2050 fired= false
allocated MB: 4050 fired= false
allocated MB: 6050 fired= false
allocated MB: 8050 fired= false
final total MB= 10000 fired= false
Bunã§ãNode.jsã§ããåèš10GBã®Bufferã確ä¿ãçµãããŸã§ memoryPressure ã¯äžåºŠãçºç«ããŸããã§ããã
ãããæå³ããããš
é床ã«ãæ©èœãå£ããŠããããšæ±ºãã€ããã®ã¯æ©èšã§ããV8ã®ã¡ã¢ãªå§è¿«éç¥ã¯ãOSãã³ã³ããã®cgroupïŒLinuxã®å Žåã¯PSIïŒPressure Stall InformationïŒããã®éç¥ã«é£åããèšèšãäžè¬çã§ãåã«ããã»ã¹å
ã§Bufferãç©ãã ãã§ã¯æ¡ä»¶ãæºãããªãå¯èœæ§ããããŸããmacOSã® DISPATCH_SOURCE_TYPE_MEMORYPRESSURE ã®ããã«ããã©ãããã©ãŒã äŸåã§å®è£
ãããŠããã±ãŒã¹ãçãããããŸããã
ãã ãå®åçã«éèŠãªã®ã¯ãä»å詊ããç¯å²ïŒLinuxäžã§ããã»ã¹ã®ã¡ã¢ãªäœ¿çšéãçŽ æŽã«å¢ããïŒã§ã¯çºç«ããªãã£ãããšããäºå®ã§ããã¯ã©ãŠãã®éçºã³ã³ããã»CIç°å¢ãªã©ãLinuxäžã§Claude Codeãåããã±ãŒã¹ã¯æ±ºããŠçãããããŸãããããã¯ã°ã©ãŠã³ãã·ã§ã«ãééãªãã¡ã¢ãªãé£ãå§ããŠãããã®æ©èœããåæã«çä»ããŠããããããšãæåŸ
ããŠæŸçœ®ããã®ã¯å±éºã ãšåãããŸãããé·æéãžã§ãã¯èªåã§ capMs ãæç€ºç㪠kill ã»ã¿ã€ã ã¢ãŠãç£èŠãçµã¿èŸŒãã§ããã»ããå®å
šã§ãã
èè èŠç¹ã®çºèŠãã€ã³ã
çè
ãé©ããã®ã¯ããªãªãŒã¹ããŒã1è¡ã®è£åŽã«ãå®ã¯Bunã§ãã«ããããŠããããšããæ
å ±ãšãå®è£
ããŸã å®ç°å¢ã§æ€èšŒãã¥ããæªç¢ºèªã®ã€ãã³ãã«äŸåããŠããããšãã2ã€ã®äºå®ãé ããŠããç¹ã§ããå
¬åŒããã¥ã¡ã³ãã®æèšã ããéµåã¿ã«ãããå®éã«ã€ã³ã¹ããŒã«æžã¿ã®ãã€ããªã strings ã§èŠããç°¡åãªã¹ã¯ãªããã§ã¡ã¢ãªãç©ãã§æåã詊ãââãã®ãããã®æéã§ãããã¥ã¡ã³ãã ãã§ã¯åãããªããæ©èœã®å®éã®çºç«æ¡ä»¶ããŸã§èžã¿èŸŒããããšãåãããŸããã
ãŸãšã
- Claude Code CLIãã€ããªã¯ãNode.jsã§ã¯ãªãBunïŒv1.4.0ïŒã§ã³ã³ãã€ã«ãããåäžå®è¡ãã¡ã€ã«ã ã£ã
- v2.1.193ã§è¿œå ããããã¢ã€ãã«ããã¯ã°ã©ãŠã³ãã·ã§ã«ã®èªåãªãŒãã³ã°ãã¯
process.on("memoryPressure", ...)ã«äŸåããŠããããããã¯Node.jså ¬åŒdocsã«ååšããªãã€ãã³ãå - Bunã»Node.jsåæ¹ã®å®æ©ã§æå€§10GBçšåºŠã®ã¡ã¢ãªç¢ºä¿ã詊ããããäžåºŠãçºç«ããªãã£ã
- Linuxç°å¢ã§ããã¯ã°ã©ãŠã³ãã·ã§ã«ãé·æéåããå Žåã¯ãèªåãªãŒãã³ã°ã«é Œããèªåã§ã¿ã€ã ã¢ãŠãã»killåŠçãçšæããã®ãå®å š
åèãªã³ã¯
- Claude Code changelog â v2.1.193ãAdded automatic memory-pressure reaping for idle background shell commandsã
-
Process | Node.js v26.4.0 Documentation â Process eventsã®äžèЧïŒ
memoryPressureãå«ãŸããªãããšã®ç¢ºèªïŒ - Bun Guide: Processes â Bunã®processãªããžã§ã¯ãã®æå