【发布时间】:2016-07-17 03:19:21
【问题描述】:
在阅读一本书时,我了解到 JavaScript 的实现倾向于使用两种垃圾收集方法中的一种。要么是标记和清除,要么是引用计数。我理解引用计数的概念。计算一个值的引用次数。当变量被赋值时,该变量的引用计数增加 1,当变量被其他值覆盖时,“THIS”值的引用计数减少 1。该过程继续进行,当引用数达到 0 时,值被认为可以安全删除。
然后有一节解释了垃圾收集中引用计数方法的交叉引用问题。它说,每当对象 A 的属性被分配到对象 B 的引用时,反之亦然,那么交叉引用问题就会出现,因为计数永远不会达到零。书中给出的例子是这样的
var A = new Object();
var B = new Object();
A.prop = B;
B.prop = A;
我完全错过了这个。我的意思是,上面的代码如何导致交叉引用问题?为什么计数永远不会为零。
注意我写了我所理解的关于引用计数的所有内容。如果我在某个地方错了,请告诉。谢谢。
【问题讨论】:
标签: javascript garbage-collection reference-counting cross-reference