1

我有一个由元素组成的缓存,每个元素都包含两个并发字典,我认为它们可能导致我的应用程序中的内存泄漏。我经常在这本词典中添加和删除内容。有人可以向我描述内存分配如何用于并发字典以及在我的情况下最佳实践是什么?提前致谢!

4

2 回答 2

4

任何 .NET 集合的删除方法都不会释放内存,它只会从集合中删除引用。如果没有其他对象引用这些对象,垃圾收集器最终会清理它们。

引用被持有的一个常见原因是忘记取消连接事件处理程序。

一些 .NET 内存分析器,例如 MemProfiler、dotTrace 和 ANTS 内存分析器都有试用版。

正如@Scott Chamberlain 所指出的,System.Runtime.Caching Namespace包含允许您在 NET Framework 应用程序中实现缓存的类型。

于 2013-12-11T07:56:19.770 回答
3

如果您要删除的元素使用非托管内存(想到位图等),这些元素应该实现IDisposable,并且您应该.Dispose在最后一个引用超出范围之前调用。

于 2013-12-11T08:09:19.943 回答