eval(';')
const $ = v => (z => (Object.getOwnPropertyNames(Array.prototype).forEach(name => z[name] = Array.prototype[name]), z))((k => k.length > 1 ? k : k[0])(document.querySelectorAll(v)));
$('a')
есть forEach, даже если там один элемент. Ну работать он конечно не будет Array(13000000)
и ситуация меняется :)empty heapUsed: 4921120
str1 heapUsed: 1368583576
str1,2 heapUsed: 1443555848
str3 heapUsed: 1443560880
str4 heapUsed: 954802728
console.log('empty heapUsed: ', process.memoryUsage().heapUsed);
const str1 = Array.from(Array(1000000), () => Math.random().toString()).join('');
console.log('str1 heapUsed:', process.memoryUsage().heapUsed);
const str2 = Array.from(Array(1000000), () => Math.random().toString()).join('');
console.log('str1,2 heapUsed:', process.memoryUsage().heapUsed);
const str3 = `${str1}${str2}`;
console.log('str3 heapUsed:', process.memoryUsage().heapUsed);
const str4 = str3.slice(1000000);
console.log('str4 heapUsed:', process.memoryUsage().heapUsed);
console.log('empty heapUsed:', process.memoryUsage().heapUsed);
const str1 = Array.from(Array(100000), () => Math.random().toString()).join('');
console.log('str1 heapUsed:', process.memoryUsage().heapUsed);
const str2 = Array.from(Array(100000), () => Math.random().toString()).join('');
console.log('str1 and str2 heapUsed:', process.memoryUsage().heapUsed);
const str3 = str1 + str2;
console.log('str1 + str2 heapUsed:', process.memoryUsage().heapUsed);
setTimeout(() => console.log(str1, str2, str3), 1000000000); // чтобы gc ничего не сожрал