在阅读一本书时,我发现JavaScript的实现倾向于使用两种垃圾收集方法中的一种。它是标记和扫描,或引用计数。我理解引用计数的概念。计算出存在多少个值的引用。当为变量赋值时,该变量的引用计数增加1,当变量被某个其他值覆盖时,引用计数为“此变量”。值减少1.进程继续,当引用数达到0时,该值被认为是安全的删除。
然后有一节解释了垃圾收集中引用计数方法的交叉引用问题。它说,只要对象A的属性被赋予对象B的引用,反之亦然,那么交叉引用问题就会到来,因为计数永远不会达到零。书中给出的例子是这样的
var A = new Object();
var B = new Object();
A.prop = B;
B.prop = A;
我完全错过了这个。我的意思是,上面的代码如何导致交叉引用问题?为什么计数永远不会达到零。
注意我写了一些我对引用计数的理解。如果我在某处错了,请告诉我。感谢。