垃圾收集 - 期待什么?

时间:2011-12-15 11:04:29

标签: c# garbage-collection

我有两个list,其中两个都保存相同类型的对象。我们称之为TypeX

当我想添加TypeX的新对象时,我会创建一个TypeX的新对象,然后使用Addlist1和{{1} }。因此,每个列表都将引用实际对象。 (我希望我就在这里)。

然后,我想删除该对象。我将list2用于Remove。因此,对象的引用已被删除......

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

5 个答案:

答案 0 :(得分:3)

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

因此,如果您从两个列表中删除对象并且不将其保存在其他任何位置,那么它最终将被垃圾收集。

答案 1 :(得分:0)

简短的回答是肯定的,GC会清理它。但是,如果您希望提高效率,我会将接口IDisposable添加到您的对象中,这样一旦所有引用都消失,GC就会干净地处理该对象。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果没有对该对象的引用,GC将在必要时收集该对象。这通常发生在内存压力增加或手动给它“提示”运行时(通常不需要)。

此链接可能会有所帮助:http://msdn.microsoft.com/en-us/library/ms973837.aspx

答案 4 :(得分:0)

拥有GC的好处在于你真的不需要担心你现在担心的事情。