」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 我們如何計算 JavaScript 物件的大致記憶體佔用量?

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

發佈於2024-11-16
瀏覽:324

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

確定 JavaScript 物件的記憶體佔用

在 JavaScript 中,了解物件的記憶體消耗對於優化效能和避免記憶體洩漏至關重要。本文解決了獲取 JavaScript 物件大小的查詢,深入研究了估計此類物件所佔用的大致記憶體的解決方案。

確定物件大小

In 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函數估計stud物件的大致記憶體消耗,包括其屬性和嵌套物件。

限制

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3