'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'); // const dom = new JSDOM('', { runScripts: 'dangerously' }); 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.document.body.innerHTML = 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: 1, }); await Promise.delay(2000); console.log(`Final memory usage: ${(process.memoryUsage.rss() / 1000000).toFixed(2)} MB, max ${peak.toFixed(2)} MB`); } init();