Détermination de l'empreinte mémoire des objets JavaScript
En JavaScript, comprendre la consommation de mémoire des objets est crucial pour optimiser les performances et éviter les fuites de mémoire. Cet article aborde la question de l'obtention de la taille d'un objet JavaScript, en approfondissant une solution qui estime la mémoire approximative occupée par ces objets.
Détermination de la taille de l'objet
Dans JavaScript, il n'existe pas de fonction intégrée spécifiquement conçue pour déterminer la taille d'un objet. Cependant, une technique courante consiste à parcourir les propriétés de l'objet et à calculer la taille de chaque valeur primitive et référence d'objet. Cette estimation prend en compte la taille des types de données, tels que booléen (4 octets), chaîne (longueur * 2 octets) et nombre (8 octets).
Mise en œuvre d'un estimateur de taille d'objet
Pour estimer la taille d'un objet donné, une fonction récursive peut être utilisée :
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; }
Exemple
En utilisant l'exemple fourni :
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`);
Dans ce scénario, la fonction roughSizeOfObject estime la consommation approximative de mémoire de l'objet stud, y compris ses propriétés et ses objets imbriqués.
Limitations
Il est important de noter que cette technique fournit une approximation et peut ne pas prendre en compte toutes les allocations de mémoire liées à l'objet. De plus, la surcharge associée aux références d'objets et aux fermetures peut introduire une complexité supplémentaire dans la détermination précise de la taille.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!