Bagaimanakah Kita Boleh Mengira Anggaran Jejak Memori Objek JavaScript?

Mary-Kate Olsen
Lepaskan: 2024-11-16 19:17:03
asal
171 orang telah melayarinya

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;
}
Salin selepas log masuk

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`);
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan