Home  >  Article  >  Web Front-end  >  How can I determine the approximate size of a JavaScript object in memory?

How can I determine the approximate size of a JavaScript object in memory?

DDD
DDDOriginal
2024-11-16 10:17:03127browse

How can I determine the approximate size of a JavaScript object in memory?

Determining the Size of a JavaScript Object

Introduction

Estimating the memory usage of a JavaScript object can be a challenging task. In this article, we will explore a comprehensive method to determine the approximate size of an object in JavaScript, inspired by a recent inquiry on getting the size of a JavaScript object.

Addressing the Problem

Consider the following JavaScript code that defines two functions, Marks and Student, and instantiates a new Student object:

function Marks() {
  this.maxMarks = 100;
}

function Student() {
  this.firstName = "firstName";
  this.lastName = "lastName";
  this.marks = new Marks();
}

var stud = new Student();

Estimating Object Size

JavaScript lacks a built-in function similar to the sizeof() operator in C . However, we can devise a custom function to estimate the size of the stud object:

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

This function traverses the object recursively, taking into account the size of primitive values (4 bytes for boolean, 8 bytes for number) and the length of strings in bytes (multiplying by 2). It also maintains an object list to prevent infinite recursion.

Conclusion

Using this function, you can approximate the size of any given JavaScript object, including arrays and custom objects. This method can be useful for optimizing memory usage, especially in performance-critical applications. While it provides an estimate rather than an exact value, it offers a valuable insight into the memory footprint of objects in JavaScript.

The above is the detailed content of How can I determine the approximate size of a JavaScript object in memory?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn