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

Jak*_*son 21 javascript memory memory-management object

假设您有以下复杂对象:

var object1 = .... // (something complexed)
Run Code Online (Sandbox Code Playgroud)

这会占用xJS应用程序中的内存量.现在假设您有一些其他参考对象object1:

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

var anotherObject = { color: '#FFF', object: object1 };
Run Code Online (Sandbox Code Playgroud)

object1最初占用的内存量是否增加了两倍?或者引用object1不添加内存开销?

我不确定如何自己测试以确定答案.(如果你可以告诉我如何指向一个有助于对此进行基准测试的工具,那么可以获得奖励积分).

nai*_*sts 8

对象总是通过JavaScript引用传递(参见这个流行的答案).当然,指向对象的指针需要一些内存(取决于实现),但比实际对象要少得多.


ceg*_*ult 6

看看这个问题.数字,字符串等总是按值调用,但是通过共享调用对象; 也就是说,它们是按值调用的,但该值是对象的引用.

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

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

就基准测试而言,请查看Mozilla的JS引擎文档SpiderMonkey.那里有很多好的工具....