«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как мы можем рассчитать приблизительный объем памяти, занимаемый объектом JavaScript?

Как мы можем рассчитать приблизительный объем памяти, занимаемый объектом JavaScript?

Опубликовано 16 ноября 2024 г.
Просматривать:276

How Can We Calculate the Approximate Memory Footprint of a JavaScript Object?

Определение объема памяти объектов 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