2011-12-15 85 views
0

我有2 list s,其中都保存相同类型的对象。我们称之为TypeX垃圾回收 - 期待什么?

当我想补充的TypeX新对象我想创建的TypeX一个新的对象,然后使用Addlist1list2。因此每个列表都会有一个对实际对象的引用。 (我希望我就在这里)。

然后,我想要删除该对象。我为list s使用Remove。因此,该对象的引用已被删除...

但是对象本身会发生什么? GC会清洁它吗?我应该删除它以某种方式吗?

回答

3

简单来说,在GC收集未通过任何其他对象引用的每个对象。

所以,如果你从两个列表中删除你的对象,并不保存在其他任何地方,它最终将被垃圾收集。

0

简短的回答是肯定的,GC会清理它。但是,如果您希望使这种效率更高,我会将接口IDisposable添加到对象中,以便GC在所有引用都去除后尽快处理该对象。

http://msdn.microsoft.com/en-us/library/system.idisposable.aspx

+5

`IDisposable`与垃圾回收器无关。 – 2011-12-15 11:09:54

+0

只有在对象使用非托管资源(处理程序,流等)时,才应该实现IDisposable接口,并且在对象设置为null(允许GC删除它)之前,它必须关心将这些资源放大.CG集合只会删除不再可到达的对象(有任何对它的引用) – 2011-12-15 11:18:51

0

只要该对象的唯一引用在这些列表中,GC就会在您将它从两个列表中删除后将其删除。

0

大约有GC的好处是,你真的不必担心您需要的资料,现在令人担忧。