메모리에 있는 JavaScript 개체의 대략적인 크기를 어떻게 확인할 수 있나요?

DDD
풀어 주다: 2024-11-16 10:17:03
원래의
125명이 탐색했습니다.

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

JavaScript 객체의 크기 결정

소개

JavaScript 객체의 메모리 사용량 추정 JavaScript 객체는 어려운 작업이 될 수 있습니다. 이 기사에서는 JavaScript 개체의 크기를 구하는 방법에 대한 최근 조사에서 영감을 받아 JavaScript에서 개체의 대략적인 크기를 결정하는 포괄적인 방법을 살펴보겠습니다.

문제 해결

Marks와 Student라는 두 가지 함수를 정의하고 새 Student 객체를 인스턴스화하는 다음 JavaScript 코드를 고려해 보세요.

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

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

var stud = new Student();
로그인 후 복사

객체 크기 추정

JavaScript에는 C의 sizeof() 연산자와 유사한 내장 함수가 없습니다. 그러나 스터드 개체의 크기를 추정하기 위한 사용자 정의 함수를 고안할 수 있습니다.

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;
}
로그인 후 복사

이 함수는 기본 값의 크기(부울의 경우 4바이트, 부울의 경우 8바이트)를 고려하여 개체를 재귀적으로 탐색합니다. 숫자) 및 문자열 길이(바이트)(2를 곱함)입니다. 또한 무한 재귀를 방지하기 위해 개체 목록을 유지 관리합니다.

결론

이 함수를 사용하면 배열 및 사용자 정의 개체를 포함하여 특정 JavaScript 개체의 크기를 대략적으로 계산할 수 있습니다. . 이 방법은 특히 성능이 중요한 애플리케이션에서 메모리 사용량을 최적화하는 데 유용할 수 있습니다. 정확한 값보다는 추정치를 제공하지만 JavaScript에서 객체의 메모리 공간에 대한 귀중한 통찰력을 제공합니다.

위 내용은 메모리에 있는 JavaScript 개체의 대략적인 크기를 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿