一个空的JavaScript对象有多少内存?

时间:2013-11-05 00:37:55

标签: javascript

选项A:

myobj = {
    a: 'a',
    a1: 'a1',
    a2: 'a2',
    a2a: 'a2a',
    a2b: 'a2b',
    a3: 'a3',
    a3a: 'a3a',
    a3a1: 'a3a1',
    a3a2: 'a3a2',
    b: 'b',
    // ...
};

VS。 选项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
}

VS。 选项B:

eventHandler: {
    trigger: {
        obj: triggerObj,
        action: triggerObj.someMethod
    },
    response: {
        obj: responseObj,
        action: responseObj.someMethod
    }
}

我很确定这就像眼科医生一样:他们是如此接近,这并不重要。然而,我想我是否有任何可靠的表现理由,或仅用于语义/可读性/其他。

回到问题标题:为了产生显着的性能问题需要多少额外的对象支撑?我怀疑即使是1000或甚至1,000,000也不重要: - \

1 个答案:

答案 0 :(得分:3)

我继续前进并做到了。我创建了一个空对象,并在其中放入了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个字节。