'use strict'; const util = require('util'); const fs = require('fs').promises; const Promise = require('bluebird'); const { JSDOM } = require('jsdom'); const waitImmediate = util.promisify(setImmediate); async function init() { let peak = 0; const files = await fs.readdir('./html'); await Promise.map(Array.from({ length: 10 }).map(() => files).flat(), async (filename) => { const html = await fs.readFile(`./html/${filename}`, 'utf8'); const dom = new JSDOM(html); dom.window.close(); const usage = process.memoryUsage.rss() / 1000000; peak = Math.max(usage, peak); console.log(`Memory usage: ${usage.toFixed(2)} MB, peak ${peak.toFixed(2)} MB`); await waitImmediate; }, { concurrency: 100, }); await Promise.delay(2000); console.log(`Final memory usage: ${(process.memoryUsage.rss() / 1000000).toFixed(2)} MB, max ${peak.toFixed(2)} MB`); } init();