ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクトのおおよそのメモリ使用量を計算するにはどうすればよいでしょうか?
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 サイトの他の関連記事を参照してください。