Unity Framework内存关注

时间:2011-01-20 16:07:05

标签: .net memory-leaks unity-container

我正在使用Microsoft.Practices.Unity框架1.2,我可以看到内存使用量随着时间的推移而急剧增加。我一直在观察Gen 0,1和2的垃圾收集器堆大小,而对象似乎会不断升级到Gen 2,它们会保留并且在没有GC声明的情况下变老。

我是否可以做一些调整来避免过多的内存消耗?

2 个答案:

答案 0 :(得分:1)

你怎么知道这是由于统一框架?注入的实例可能没有正确处理。我建议使用RedGate Memory Profiler,因为它会准确地告诉你什么是未收集的。内存泄漏是PITA,过去两周我一直在处理它们。

事件处理程序通常是导致这些类型问题的原因。确保手动删除所有事件处理程序。

我发现GC在清理方面并不像你想象的那么好。

答案 1 :(得分:0)

如果对象正在迁移到第2代,那意味着它们仍然存在。确保您的类实现IDisposable,并且他们在包含的任何引用上调用Dispose()。自动执行此操作的一种方法(如果您使用的是C#)是将引用包装在using块中。引用将自动在块的末尾处理。