我有一个设计,我不确定垃圾收集是否会正确发生 我有一些神奇的苹果,有些是美味的,有些是坏的。
我有一本字典:BasketList = Dictionary <basketID,Basket>
(篮子清单)。
每个Basket
对象中都有一个Apple
,每个Basket
都存储对象AppleSeperation
的引用。
{{1存储2个字典,AppleSeperation
和YummyApples = <basketID,Apple>
,所以当我被问到我知道苹果在哪里时。
一个BadApples = Dictionary<basketID,Apple>
对象存储Apple
,它指向购物篮和商店,以及指向购物篮中的Apple。
我的问题是,如果我从BasketsImIn = Dictionary<ID,Basket>
删除一个购物篮并确保从BasketList
和/或BadApples
删除Apple,垃圾收集是否会正常发生,或者是否会一些乱七八糟的参考文献?
答案 0 :(得分:2)
你仔细思考这个问题是正确的;拥有各种引用不仅会影响垃圾收集,还会影响应用程序的正常运行。
但是,只要您小心删除已设置的所有引用,并且没有任何其他独立变量保留引用,垃圾收集器就会完成其工作。
GC在收集未引用的对象时实际上非常复杂。例如,它可以收集两个相互引用的对象,但在应用程序中没有其他“活动”引用。
答案 1 :(得分:1)
有关垃圾收集的基本知识,请参阅http://msdn.microsoft.com/en-us/library/ee787088.aspx。
从上面的链接中,当垃圾收集发生时......
如果您正在进行正确的清理,那么您无需担心!