„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können wir den ungefähren Speicherbedarf eines JavaScript-Objekts berechnen?

Wie können wir den ungefähren Speicherbedarf eines JavaScript-Objekts berechnen?

Veröffentlicht am 16.11.2024
Durchsuche:823

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

Bestimmen des Speicherbedarfs von JavaScript-Objekten

In JavaScript ist das Verständnis des Speicherverbrauchs von Objekten entscheidend für die Optimierung der Leistung und die Vermeidung von Speicherlecks. Dieser Artikel befasst sich mit der Abfrage der Größe eines JavaScript-Objekts und befasst sich mit einer Lösung, die den ungefähren von solchen Objekten belegten Speicher schätzt.

Bestimmen der Objektgröße

In In JavaScript gibt es keine integrierte Funktion, die speziell zur Bestimmung der Größe eines Objekts entwickelt wurde. Eine gängige Technik besteht jedoch darin, die Eigenschaften des Objekts zu durchlaufen und die Größe jedes Grundwerts und jeder Objektreferenz zu berechnen. Bei dieser Schätzung werden die Größen von Datentypen berücksichtigt, z. B. boolescher Wert (4 Byte), Zeichenfolge (Länge * 2 Byte) und Zahl (8 Byte).

Implementieren eines Objektgrößenschätzers

Um die Größe eines bestimmten Objekts abzuschätzen, kann eine rekursive Funktion verwendet werden:

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

Beispiel

Unter Verwendung des bereitgestellten Beispiels:

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

In diesem Szenario schätzt die Funktion „roughSizeOfObject“ den ungefähren Speicherverbrauch des Stud-Objekts, einschließlich seiner Eigenschaften und verschachtelten Objekte.

Einschränkungen

Es ist wichtig zu beachten, dass diese Technik eine Annäherung liefert und möglicherweise nicht alle mit dem Objekt verbundenen Speicherzuweisungen berücksichtigt. Darüber hinaus kann der mit Objektreferenzen und -abschlüssen verbundene Mehraufwand zu zusätzlicher Komplexität bei der genauen Bestimmung der Größe führen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3