我正在使用 C#,在某些方法中,我使用多个列表来获取数据库结果。这些可能非常大(10 个列表,每个列表大约 1,000 个对象)。目前,我只是从这些方法中返回并让垃圾收集器清除它。如果在回来之前我写TheList.Clear();
这会有什么好处吗?
谢谢。
我正在使用 C#,在某些方法中,我使用多个列表来获取数据库结果。这些可能非常大(10 个列表,每个列表大约 1,000 个对象)。目前,我只是从这些方法中返回并让垃圾收集器清除它。如果在回来之前我写TheList.Clear();
这会有什么好处吗?
谢谢。
由于调用Clear
列表不会对数据造成垃圾回收,而只会从列表中删除对对象的引用,因此不会带来任何好处。
不,因为您没有将列表复制给调用该方法的人,所以您正在发送对该列表的引用,该列表仅存在于内存中的一个位置。如果您清除列表,您也将清除您发送的列表,因为它是相同的。
如果我给你一个盒子,你把它装满东西,但是当你把盒子还给我之后,你把它清空,它就会是空的。
不,因为垃圾收集器将检测到没有对列表或其内容的引用,无论您是否这样做,并且在垃圾收集器运行之前不会回收内存。