清除词典会对垃圾收集器有利吗?

时间:2015-09-28 08:55:50

标签: .net garbage-collection

当我使用一组非结构对象 - 对象词典(Dictionary<ClassA,ClassB>)时,如果我在所有这些词组上调用Clear(),我会帮GC吗?

或者更有趣的是:当我这样做时,它对GC有害吗?

包括词典在内的所有对象都应该在第2代,因为它是一个长期运行的转换,它也会生成大量的短期和中等生活辅助对象。

评论更新: 对象本身主要由EntityFramework上下文加载(因此字典不是GC根),并且字典不会被重用,因为在上下文类中使用它是这样的:

internal sealed class TransformationContext : IDisposable
{
   private readonly Dictionary<ClassA,ClassB> dict1 = new ...;
   private readonly Dictionary<ClassC,ClassD> dict2 = new ...;
   private readonly Dictionary<ClassE,ClassF> dict3 = new ...;

   public void Dispose() // class is sealed, classic Dispose-pattern not needed
   {
     dict1.Clear();
     dict2.Clear();
     dict3.Clear();
   }
}

using(var context = new TransformationContext(some, input, values))
  [...]

0 个答案:

没有答案