JavaScript オブジェクトが占めるサイズを知りたいです。
次の関数を考えてみましょう。
function Marks(){
this.maxMarks = 100;
}
function Student(){
this.firstName = "firstName";
this.lastName = "lastName";
this.marks = new Marks();
}
ここで、以下をインスタンス化しますstudent
:
var stud = new Student();
そうすれば、
stud.firstName = "new Firstname";
alert(stud.firstName);
stud.marks.maxMarks = 200;
等
これで、stud
オブジェクトはメモリ内でいくらかのサイズを占有することになります。オブジェクトにはいくつかのデータと、さらにオブジェクトが含まれます。
オブジェクトが占有するメモリの量を調べるにはどうすればいいでしょうかstud
? JavaScript の のようなものですかsizeof()
? のような単一の関数呼び出しで調べることができたら本当に素晴らしいと思いますsizeof(stud)
。
何ヶ月もインターネットで検索しましたが、見つかりません (いくつかのフォーラムで質問しましたが、返信はありませんでした)。
ベストアンサー1
私は自分のコードをリファクタリングしました元の回答再帰を削除し、想定される存在のオーバーヘッドを削除しました。これは、スタイルを少し最新のものにするための新しい編集です。
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;
}