Node.js žere paměť? Systematický návod jak najít a opravit memory leaky.
Detekce¶
setInterval(() => console.log(Heap: ${Math.round(process.memoryUsage().heapUsed/1024/1024)} MB), 10000);
Chrome DevTools¶
node –inspect app.js
chrome://inspect → Memory → Heap snapshot¶
Příčiny¶
Event listenery¶
// ❌ emitter.on(‘data’, handler) v loopu
// ✅ emitter.once() nebo removeListener
Closures¶
Closure drží referenci na velký objekt, který by jinak GC sebral.
Globální cache¶
// ❌ const cache = {}; cache[key] = data; // roste neomezeně
// ✅ LRUCache s max size
Neuzavřené streamy¶
Vždy uzavírejte DB connections, file streams, HTTP connections.
LRU Cache¶
import { LRUCache } from ‘lru-cache’;
const cache = new LRUCache({ max: 500 });
Postup¶
Heap snapshot → porovnat 3 snapshoty → najít rostoucí objekty → opravit.