Javascript 对象引用会占用额外的内存吗?

Javascript 对象引用会占用额外的内存吗?,javascript,object,memory,memory-management,Javascript,Object,Memory,Memory Management,假设您有以下复杂对象: var object1 = .... // (something complexed) 这将占用JS应用程序中的x内存量。现在让我们假设您有一些引用object1的其他对象: var otherObject = { something: true, value: 'yes', object: object1 }; var anotherObject = { color: '#FFF', object: object1 }; 我是否将object1最初占用的内存量增加

假设您有以下复杂对象:

var object1 = .... // (something complexed)
这将占用JS应用程序中的
x
内存量。现在让我们假设您有一些引用
object1
的其他对象:

var otherObject = { something: true, value: 'yes', object: object1 };

var anotherObject = { color: '#FFF', object: object1 };
我是否将
object1
最初占用的内存量增加了三倍?还是对
object1
的引用没有增加所用内存的开销


我不知道如何亲自测试以确定答案。(如果您能告诉我如何向我指出一个有助于基准测试的工具,则会获得额外的积分)。

对象总是通过JavaScript中的引用传递(请参见此)。当然,指向对象的指针占用了一些内存(取决于实现),但比实际对象占用的内存要少得多。

看一看。数字、字符串等总是按值调用,但对象是;也就是说,它们由值调用,但值是对对象的引用

换句话说,如果修改指针的属性,则修改的内存池与对象相同。但如果重新指定指针,则不会影响原始对象

这意味着,在您的示例中,
object1
占用的内存量没有增加三倍,但是
object1
的额外指针将占用一些内存空间。到底有多少空间?这取决于Javascript引擎的精确实现,但它总是比对象的大小小得多


至于基准测试,请查看Mozilla的JS引擎文档。这里有很多很好的实用程序……

似乎是一个很好的问题。嗯,您需要一些内存来指示引用确实存在。否则,你怎么知道它是否在那里。