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.
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