c# - .Net 4.5.1 ConcurrentDictionary TryRemove() 方法是否释放分配的内存?

标签 c# .net memory-leaks concurrentdictionary .net-4.5

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

最佳答案

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

引用被挂起的一个常见原因是忘记取消事件处理程序。

MemProfiler、dotTrace 和 ANTS 内存分析器等多个 .NET 内存分析器都有试用版。

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

关于c# - .Net 4.5.1 ConcurrentDictionary TryRemove() 方法是否释放分配的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20513433/

相关文章:

c# - 实现 IDispatch::Invoke 以供 WebBrowser 控件调用

c++ - 分配结构数组后内存被覆盖

c# - 在工作线程中创建对象并绑定(bind)到它们

c# - 如何使用 C# 在 switch-case 条件下使用当前 case 语句的值跳转到另一个 case 语句

c# - Try/Catch Wrap Around Task.Run 不处理异常

.net - 检测 .NET 对象的属性值的变化?

c# - 通过 API 测试测量 C# .net 代码覆盖率

node.js - 如何使用 zlib 改进 Node.js 中内存泄漏的代码?

c# - 网络摄像头代码中的内存泄漏

c# - 使用 FreeImage 是否可以在 ARGB32 或 RGBA32 而不是 BGRA32 中输出 ConvertToRawBits?