在返回好之前清算清单?

时间:2012-11-04 19:41:29

标签: c# .net memory-management garbage-collection

我正在使用C#,在某些方法中,我使用了几个数据库结果列表。这些可能非常大(每个约1000个对象的10个列表)。 目前,我只是从这些方法返回并让垃圾收集器清除它。如果在回来之前我写TheList.Clear();这会有什么好处吗?

感谢。

3 个答案:

答案 0 :(得分:5)

由于在列表上调用Clear不会导致数据上的垃圾收集,只会将列表中的引用从对象中移除,因此不会带来任何好处。

答案 1 :(得分:2)

不,因为您没有将列表复制到调用该方法的人,所以您要向该列表发送仅存在于内存中某个位置的引用。如果清除列表,您将清除您从方法中发送的列表,因为它是相同的。

如果我给你一个盒子,你用对象填充它,但是在你把盒子给我后,你将它清空,它将是空的。

答案 2 :(得分:1)

不,因为垃圾收集器会检测到没有对列表或其内容的引用,无论您是否已经这样做,并且在垃圾收集器运行之前内存不会被回收。