[英]Garbage collection and references C#
我有一个设计,我不确定垃圾收集是否会正确发生。
我有一些神奇的苹果,有些是美味的,有些是坏的。
我有一本字典: BasketList = Dictionary <basketID,Basket>
(篮子清单)。
每个Basket
对象中都有一个Apple
,每个Basket
存储一个对象AppleSeperation
的引用。
AppleSeperation
存储2个词典, YummyApples = <basketID,Apple>
和BadApples = Dictionary<basketID,Apple>
,所以当我被问到苹果在哪里时我知道。
Apple
对象存储BasketsImIn = Dictionary<ID,Basket>
,它指向Basket和Shops,以及Apple in Basket。
我的问题是,如果我从BasketList
删除一个篮子并确保我从BadApples
和/或YummyApples
删除Apple, BadApples
垃圾收集是否会正常发生,或者是否会有一些混乱的引用?
你仔细思考这个问题是正确的; 拥有各种引用不仅对垃圾收集有影响,而且对您的应用程序的正常运行有影响。
但是,只要您小心删除已设置的所有引用,并且没有任何其他独立变量保留引用,垃圾收集器就会完成其工作。
GC在收集未引用的对象时实际上相当复杂。 例如,它可以收集两个相互引用的对象,但在应用程序中没有其他“活动”引用。
有关垃圾回收的基础知识,请参见http://msdn.microsoft.com/en-us/library/ee787088.aspx 。
从上面的链接,当垃圾收集发生时......
如果您正在进行正确的清理,那么您不必担心!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.