Определение объема памяти объектов JavaScript
В JavaScript понимание потребления памяти объектами имеет решающее значение для оптимизации производительности и предотвращения утечек памяти. В этой статье рассматривается вопрос получения размера объекта JavaScript и рассматривается решение, которое оценивает приблизительный объем памяти, занимаемой такими объектами.
Определение размера объекта
В В JavaScript нет встроенной функции, специально предназначенной для определения размера объекта. Однако общий метод включает в себя перебор свойств объекта и вычисление размера каждого примитивного значения и ссылки на объект. Эта оценка учитывает размеры типов данных, таких как логические значения (4 байта), строки (длина * 2 байта) и числа (8 байтов).
Реализация средства оценки размера объекта
Чтобы оценить размер данного объекта, можно использовать рекурсивную функцию:
function roughSizeOfObject(object) { const objectList = []; const stack = [object]; let bytes = 0; while (stack.length) { const value = stack.pop(); switch (typeof value) { case 'boolean': bytes = 4; break; case 'string': bytes = value.length * 2; break; case 'number': bytes = 8; break; case 'object': if (!objectList.includes(value)) { objectList.push(value); for (const prop in value) { if (value.hasOwnProperty(prop)) { stack.push(value[prop]); } } } break; } } return bytes; }
Пример
Использование предоставленного примера:
function Marks() { this.maxMarks = 100; } function Student() { this.firstName = "firstName"; this.lastName = "lastName"; this.marks = new Marks(); } const stud = new Student(); const sizeInBytes = roughSizeOfObject(stud); console.log(`Object size: ${sizeInBytes} bytes`);
В этом сценарии функциягрубыйSizeOfObject оценивает приблизительное потребление памяти объектом-стержнем, включая его свойства и вложенные объекты.
Ограничения
Важно отметить, что этот метод дает приблизительное представление и может не учитывать все выделения памяти, связанные с объект. Кроме того, накладные расходы, связанные со ссылками на объекты и замыканиями, могут усложнить точное определение размера.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3