【问题标题】:is clearing lists before returning good?退货前清空清单好吗?
【发布时间】:2012-11-04 19:41:29
【问题描述】:

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      如果我给你一个盒子,你把它装满东西,但是当你把盒子还给我之后,你清空它,它就会是空的。

      【讨论】:

      • 我使用 10 个列表组成一个新对象列表。
      • @frenchie:列表也是一个对象。对其他对象的引用列表。列表在内存中占用的空间并不多,但其中的对象会。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-29
        • 1970-01-01
        • 2016-11-06
        • 2018-11-03
        • 2015-03-10
        • 1970-01-01
        相关资源
        最近更新 更多