Skip to content

Node --inspect

Terminal window
node --inspect examples/node/03-closure-cache-leak.js
# or break on first line:
node --inspect-brk examples/node/03-closure-cache-leak.js

Output:

Debugger listening on ws://127.0.0.1:9229/...
  1. Chrome → chrome://inspect
  2. Configure → ensure localhost:9229 listed
  3. inspect link under Remote Target

Same Memory / Performance tabs as browser debugging.

Terminal window
node --expose-gc --inspect examples/node/01-global-array-fixed.js

In console: gc() (when exposed) or use Memory tab trash icon.

import v8 from 'node:v8';
setInterval(() => {
const path = v8.writeHeapSnapshot();
console.log('snapshot', path);
}, 60_000);

Ship snapshots from staging — analyze locally in DevTools.

Script Expected retainer
01-global-array-leak.js globalstore array
02-event-emitter-leak.js EventEmitter listeners array
03-closure-cache-leak.js jobs → closure contexts