Rumah >hujung hadapan web >tutorial js >Bagaimanakah Kita Boleh Mengira Anggaran Jejak Memori Objek JavaScript?

Bagaimanakah Kita Boleh Mengira Anggaran Jejak Memori Objek JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-16 19:17:03240semak imbas

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

Menentukan Jejak Memori Objek JavaScript

Dalam JavaScript, memahami penggunaan memori objek adalah penting untuk mengoptimumkan prestasi dan mengelakkan kebocoran memori. Artikel ini menangani pertanyaan untuk mendapatkan saiz objek JavaScript, menyelidiki penyelesaian yang menganggarkan anggaran memori yang diduduki oleh objek tersebut.

Menentukan Saiz Objek

Dalam JavaScript, tiada fungsi terbina dalam yang direka khusus untuk menentukan saiz objek. Walau bagaimanapun, teknik biasa melibatkan lelaran melalui sifat objek dan mengira saiz setiap nilai primitif dan rujukan objek. Anggaran ini mengambil kira saiz jenis data, seperti boolean (4 bait), rentetan (panjang * 2 bait) dan nombor (8 bait).

Melaksanakan Penganggar Saiz Objek

Untuk menganggarkan saiz objek yang diberikan, fungsi rekursif boleh digunakan:

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;
}

Contoh

Menggunakan contoh yang disediakan:

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

Dalam senario ini, fungsi roughSizeOfObject menganggarkan anggaran penggunaan memori objek stud, termasuk sifatnya dan objek bersarang.

Penghadan

Adalah penting untuk ambil perhatian bahawa teknik ini menyediakan anggaran dan mungkin tidak mengambil kira semua peruntukan memori yang berkaitan dengan objek. Selain itu, overhed yang dikaitkan dengan rujukan dan penutupan objek boleh memperkenalkan kerumitan tambahan dalam menentukan saiz dengan tepat.

Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Mengira Anggaran Jejak Memori Objek JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn