我有一个关于垃圾收集如何在Javascript中工作的快速问题。Javascript内存释放
如果我有这样的代码:
var c = {name : ‘Bob’};
c = {name : ‘Mary’};
在变量c上面的代码所指向的对象{名称:“鲍勃”}。但是,我设置c指向内存中的另一个对象{name:'Mary'}。该c最初指向的对象({name:'Bob'})会发生什么?由于没有引用它,该原始对象是否会在内存中被释放?
在另一种情况:
var c = {name : ‘Bob’};
d = c;
c = {name : ‘Mary’};
现在,原来的对象是c是指向({名称:“鲍勃”}):“鲍勃”不会因为d仍然指向{名称被释放}即使在“c”被改为指向新对象之后:{name:'Mary'}。正确?
所以基本上,只要仍有指向它的引用,对象将不会从内存中释放。
有人请向我解释,如果我正确地思考这个问题吗?
是的,原则上这是正确的。但是,*发生垃圾收集时完全取决于浏览器,因此经常使用表达式“可用于垃圾回收”而不是“垃圾回收”。 – RobG