ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクトのおおよそのメモリ使用量を計算するにはどうすればよいでしょうか?

JavaScript オブジェクトのおおよそのメモリ使用量を計算するにはどうすればよいでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 19:17:03240ブラウズ

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

JavaScript オブジェクトのメモリ フットプリントの決定

JavaScript では、パフォーマンスを最適化しメモリ リークを回避するために、オブジェクトのメモリ消費量を理解することが重要です。この記事では、JavaScript オブジェクトのサイズを取得するクエリに対処し、そのようなオブジェクトが占有するおおよそのメモリを推定するソリューションについて詳しく説明します。

オブジェクト サイズの決定

JavaScript には、オブジェクトのサイズを決定するために特別に設計された組み込み関数はありません。ただし、一般的な手法では、オブジェクトのプロパティを反復処理し、各プリミティブ値とオブジェクト参照のサイズを計算します。この推定では、ブール値 (4 バイト)、文字列 (長さ * 2 バイト)、数値 (8 バイト) などのデータ型のサイズが考慮されます。

オブジェクト サイズ推定器の実装

特定のオブジェクトのサイズを推定するには、再帰関数を使用できます。採用:

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

提供された例の使用:

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

このシナリオでは、roughSizeOfObject 関数はおおよそのメモリ消費量を推定します。スタッド オブジェクトのプロパティとネストされたスタッド オブジェクトの

制限事項

この手法は近似値を提供するものであり、オブジェクトに関連するすべてのメモリ割り当てを考慮しているわけではないことに注意することが重要です。さらに、オブジェクト参照とクロージャに関連するオーバーヘッドにより、サイズを正確に決定する際にさらに複雑さが生じる可能性があります。

以上がJavaScript オブジェクトのおおよそのメモリ使用量を計算するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。