我正在使用C#,在某些方法中,我使用了几个数据库结果列表。这些可能非常大(每个约1000个对象的10个列表)。
目前,我只是从这些方法返回并让垃圾收集器清除它。如果在回来之前我写TheList.Clear();
这会有什么好处吗?
感谢。
答案 0 :(得分:5)
由于在列表上调用Clear
不会导致数据上的垃圾收集,只会将列表中的引用从对象中移除,因此不会带来任何好处。
答案 1 :(得分:2)
不,因为您没有将列表复制到调用该方法的人,所以您要向该列表发送仅存在于内存中某个位置的引用。如果清除列表,您将清除您从方法中发送的列表,因为它是相同的。
如果我给你一个盒子,你用对象填充它,但是在你把盒子给我后,你将它清空,它将是空的。
答案 2 :(得分:1)
不,因为垃圾收集器会检测到没有对列表或其内容的引用,无论您是否已经这样做,并且在垃圾收集器运行之前内存不会被回收。