Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/480.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript对象处理内存? 鉴于:_Javascript_Object - Fatal编程技术网

如何使用javascript对象处理内存? 鉴于:

如何使用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

假设EventXObj是一个javascript对象,它有许多属性和一些方法

EventXObj可以与简单的字符串id关联,如下所示

[ "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,因为它是指向现有字符串的一对指针)。但是,如果需要,可以强制使用扁平字符串
  • 包含
    n
    elements=3*4*2*closestPowerOfTwo(n)字节的字典

现在,您可以对当前版本的V8进行计算了。

谢谢:这是我真正想知道的,但我不知道如何提问--->“JavaScript中的一切都像指针/引用”