const approxOneMbOfStrings = 131061 const increments = [ {from: 0, increment: 1}, {from: 40, increment: 5}, {from: 100, increment: 10}, {from: 250, increment: 25}, {from: 500, increment: 50}, {from: 1000, increment: 100}, {from: 2000, increment: 250}, ] export class MemoryTestFragmented { async run( ): Promise { const largeObjects = [] const allocateMemoryAndRepeat = (): void => { const used = Math.round(process.memoryUsage().heapUsed / Math.pow(1024, 2)); console.log(`Memory usage: ${used}MB`) const nextIncrement = increments.findIndex(x => used < x.from) const incrementIndex = (nextIncrement === -1 ? increments.length : nextIncrement) - 1 const increment = increments[incrementIndex].increment largeObjects.push(Array(increment * approxOneMbOfStrings).fill("oom1")); continueAllocatingMemory() } const continueAllocatingMemory = (): void => { setTimeout(allocateMemoryAndRepeat, 100); } continueAllocatingMemory() await new Promise(() => {}) // Program ends when it OOMs. } }