如何使用javascript对象处理内存? 鉴于:
假设EventXObj是一个javascript对象,它有许多属性和一些方法 EventXObj可以与简单的字符串id关联,如下所示如何使用javascript对象处理内存? 鉴于:,javascript,object,Javascript,Object,假设EventXObj是一个javascript对象,它有许多属性和一些方法 EventXObj可以与简单的字符串id关联,如下所示 [ "id1" : Event1Obj , "id2": Event2Obj, ..., "id1000": Event1000Obj ] 我们想展示一个PlaceXObject是如何容纳多个事件的 问题是: 关于以下内容,场景A是否比场景B占用更多内存 场景A PlaceX.events = [ "id1", "id2", "id75", ... ] 场景B
[ "id1" : Event1Obj , "id2": Event2Obj, ..., "id1000": Event1000Obj ]
我们想展示一个PlaceXObject是如何容纳多个事件的
问题是:
关于以下内容,场景A是否比场景B占用更多内存
场景A
PlaceX.events = [ "id1", "id2", "id75", ... ]
场景B
PlaceX.events = [ Event1Obj, Event2Obj, Event75Obj, ... ]
从通用的角度来看,场景B可能是内存效率最高的场景。JavaScript中的所有内容都类似于指针/引用,因此B对数组中包含的每个事件都使用一个整数(大约)
场景A使用的内存和字符串一样多,所以对于长字符串来说是不好的。对于您的情况,对于非常短的字符串,差别不大。这完全取决于您使用的JavaScript引擎使用的内存模型 以当前版本的V8为例(假设为32位):
- 指针=4个字节
- Strings=12+[string length]字节
- 串联字符串=12+2*4字节(2*4,因为它是指向现有字符串的一对指针)。但是,如果需要,可以强制使用扁平字符串
- 包含
elements=3*4*2*closestPowerOfTwo(n)字节的字典n
现在,您可以对当前版本的V8进行计算了。谢谢:这是我真正想知道的,但我不知道如何提问--->“JavaScript中的一切都像指针/引用”