循环引用

问题描述:

可能重复:
Why are circular dependencies considered harmful?循环引用

我有一个线对象和一个点对象。一条线有两个点的引用,并且每个点都有一个引用返回到它所属的线对象。

我听说某处(我认为)循环引用是一件坏事,但我不明白为什么。有人可以填写我的一些细节吗?

+1

为什么Point需要链接回它所属的行?你在哪里使用这个? – 2010-09-06 04:10:59

Reference counting是一种常见的内存/资源管理技术,循环引用不能很好地处理它。如果对象A包含对对象B的引用,并且对象B包含对对象A的引用,则两个对象的引用计数均为1,即使两个对象均不在其他地方引用,也不能垃圾收集。

更复杂的垃圾收集器能够处理周期,因此不会发生此问题。

他们可能成为问题的一种方法是垃圾收集器。因为他们持有对彼此的引用,他们不应该找到有资格收集的对象。但大多数垃圾收集器都检测到循环依赖并收集它们。请参阅this question