首頁  >  文章  >  web前端  >  我們如何計算 JavaScript 物件的大致記憶體佔用量?

我們如何計算 JavaScript 物件的大致記憶體佔用量?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-16 19:17:03171瀏覽

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`);

在此場景中,roughSizeOfObject 函數估計近似的記憶體消耗螺柱物件的屬性,包括其屬性和嵌套

限制

需要注意的是,此技術提供了近似值,可能無法解釋與物件相關的所有記憶體分配。此外,與物件參考和閉包相關的開銷可能會為準確確定大小帶來額外的複雜性。

以上是我們如何計算 JavaScript 物件的大致記憶體佔用量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn