debugMajor
Node.js memory leak from closures capturing large objects
Viewed 0 times
heap snapshotclosure leakWeakRefWeakMapgarbage collectionretained size
nodejs
Error Messages
Problem
Node.js process memory grows steadily over time. Heap snapshots show retained objects that should have been garbage collected.
Solution
Closures retain references to enclosing scope variables. Fixes: (1) Null out large variables after use. (2) Use WeakRef or WeakMap for caches. (3) Remove event listeners when done. (4) Avoid module-level arrays that grow without bounds — add eviction. (5) Debug: take heap snapshots in Chrome DevTools (node --inspect), compare to find growing objects.
Why
JavaScript closures create implicit references. V8's garbage collector cannot collect any object that has a reachable reference, even if the code never uses it again.
Revisions (0)
No revisions yet.