当我使用一组非结构对象 - 对象词典(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))
[...]