Monitor Node.js memory usage and emit events when thresholds are exceeded
npm install mem-pressureimport MemoryMonitor, {getMemorySnapshot} from 'mem-pressure';
const monitor = new MemoryMonitor({threshold: 0.9, interval: 10_000});
monitor.addEventListener('pressure', event => {
console.log('Memory pressure detected!');
console.log(`Heap usage: ${(event.detail.heapUsedRatio * 100).toFixed(1)}%`);
});
monitor.start();
// Get a one-off snapshot
const snapshot = getMemorySnapshot();
console.log(snapshot.heapUsedRatio);
// Stop monitoring
monitor.stop();Creates a new memory monitor instance. Extends EventTarget.
Type: object
Type: number
Default: 0.85
Heap usage ratio (0-1) at which to emit 'pressure' events.
Type: number
Default: 5000
Polling interval in milliseconds, at most 2147483647. Larger values throw RangeError rather than overflow into rapid polling.
Emitted when heapUsed / heapTotal exceeds the threshold. The listener receives a CustomEvent with detail set to a MemorySnapshot object.
Start monitoring memory usage. Returns this for chaining.
Stop monitoring memory usage. Returns this for chaining.
Calls .stop(). Enables use with the using declaration.
Returns a MemorySnapshot object with the following properties:
rss— Resident Set Size in bytesheapTotal— Total size of the allocated heap in bytesheapUsed— Actual memory used during execution in bytesexternal— Memory used by C++ objects bound to JavaScript objects in bytesarrayBuffers— Memory allocated forArrayBufferandSharedArrayBufferin bytesheapUsedRatio— Ratio ofheapUsedtoheapTotal(0-1)
- v8 - Node.js V8 API
- process.memoryUsage - Node.js memory usage API
MIT