我有一个由元素组成的缓存,每个元素都包含两个并发字典,我认为它们可能是我应用程序中内存泄漏的原因。我经常在这本字典中添加和删除内容。有人可以向我提供内存分配如何为并发字典工作的描述以及在我的情况下最佳实践是什么?提前谢谢!
答案 0 :(得分:4)
任何.NET集合的remove方法都不会释放内存,它只会从集合中删除引用。如果没有别的东西引用这些对象,垃圾收集器最终会清理它们。
引用引用的常见原因是忘记取消事件处理程序。
MemProfiler,dotTrace和ANTS内存分析器等多个.NET内存分析器都有试用版。
正如@Scott Chamberlain指出的那样,System.Runtime.Caching Namespace
包含允许您在.NET Framework应用程序中实现缓存的类型。
答案 1 :(得分:3)
如果你要删除的元素使用非托管内存(脑图等),这些元素应该实现IDisposable
,你应该在最后一个引用超出范围之前调用.Dispose
。