空的 JavaScript 对象有多少内存
How much memory is an empty JavaScript object?
选项 A:
myobj = {
a: 'a',
a1: 'a1',
a2: 'a2',
a2a: 'a2a',
a2b: 'a2b',
a3: 'a3',
a3a: 'a3a',
a3a1: 'a3a1',
a3a2: 'a3a2',
b: 'b',
// ...
};
与。 选项 B:
myobj = {
a: {
a1: 'a1',
a2: {
a2a: 'a2a',
a2b: 'a2b'
},
a3: {
a3a: {
a3a1: 'a3a1',
a3a2: 'a3a2'
}
}
},
b: { ... }
};
我正在权衡这是一个设计决策。 这是一个更简单的案例:
选项 A:
eventHandler: {
triggerObj: triggerObj,
triggerAction: triggerObj.someMethod,
responseObj: responseObj,
responseAction: responseObj.someMethod
}
与选项 B:
eventHandler: {
trigger: {
obj: triggerObj,
action: triggerObj.someMethod
},
response: {
obj: responseObj,
action: responseObj.someMethod
}
}
我很确定这就像眼科医生一样:他们离得很近,这并不重要。 但是,我想我会看看是否有任何可靠的性能原因,或者只是为了语义/可读性/其他。
回到问题标题:需要多少个额外的对象大括号才能出现明显的性能问题? 我怀疑即使是几个 1000 甚至 1,000,000 也会很重要:-''
我继续这样做。我创建了一个空对象,并在其中放置了 100 万个空对象。然后我打开了探查器。
Object count: 1,011,296
Shallow size: 12,202,312
Retained size: 14,434,484
所以每个空的 JavaScript 对象大约有 12 个字节。我也尝试了空数组对象:
Array count: 1,000,725
Shallow size: 32,023,200
Retained size: 32,034,880
空数组对象占用大约 32 个字节。
相关文章:
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 重复应用 d3 转换导致的内存泄漏
- 如何显示在给定极限内存在的所有素数
- IE7中的blockUI插件内存泄漏25kb
- 计算输入中有多少逗号分隔的字符串
- Javascript闭包-如何防止内存泄漏
- 基于订阅的nosql内存数据库
- 显示:阻止/无html元素,css.not从内存中释放
- 使用模块模式时分配了多少内存
- 节点为数组中的空值分配多少内存
- 了解脚本使用了多少内存
- 空的 JavaScript 对象有多少内存
- 我可以在javascript中使用多少内存
- 数字的大小(在内存中)是多少
- JavaScript 声明的函数在脚本加载时消耗多少内存
- 用JavaScript重新创建一个函数需要多少内存
- JS移动:我有多少内存可用
- ExtJS应用程序使用了多少JVM内存java堆空间
- 浏览器实际上可以将多少JavaScript加载到内存中
- 初始化画布的内存命中率是多少