Automated memory leak regression testing for Node.js — detect growing object graphs in CI
npm install memcheck-nodeimport memcheck, {assertNoLeaks, formatReport} from 'memcheck-node';
// Check a scenario for memory leaks
const result = await memcheck(async () => {
// Your scenario: e.g., handle an HTTP request
const data = processRequest({id: 1});
return data;
}, {
iterations: 5,
allowedGrowth: 0.1, // Allow up to 10% heap growth
});
console.log(result.leaked);
// => false
console.log(formatReport(result));
// Or use assertNoLeaks in your tests
await assertNoLeaks(async () => {
// This will throw if a leak is detected
processRequest({id: 1});
});Returns: Promise<{leaked, snapshots, growth}>
Run a scenario function multiple times and detect memory leaks by monitoring heap growth.
Type: () => Promise<void> | void
A function that performs the operation to test.
Type: number
Default: 5
Number of snapshot cycles to run.
Type: boolean
Default: true
Force garbage collection between iterations. Requires --expose-gc flag or global.gc to be available.
Type: number
Default: 0.1
Maximum allowed heap growth as a decimal (0.1 = 10%).
leaked—trueif a memory leak was detectedsnapshots— Array of{usedHeapSize, totalHeapSize, iteration}objectsgrowth— Percentage growth as a decimal
Returns: string
Format a memcheck result as a human-readable report.
Returns: Promise<MemcheckResult>
Run memcheck and throw an error if a memory leak is detected. Useful in test suites.
- v8 — Node.js V8 engine API
MIT