【发布时间】:2023-03-26 13:02:01
【问题描述】:
我了解此问题是否因重复而关闭,但我在协调有关此主题的一些帖子时遇到了一些麻烦。
首先是一点背景。我有一个类 Foo 如下
public class Foo : IDisposable
{
private Dictionary<int, string> _reallyBigDictionary =
new Dictionary<int, string>();
public void Dispose()
{
_reallyBigDictionary = null;
}
}
众所周知,Foo 的实例范围有限(即我知道我们不会永远保留它)。鉴于它的实例范围有限,我看不出将 _reallyBigDictionary 清零实际上比处置更快地释放内存。按照我的理解,这些对象在垃圾收集运行之前永远不会被清理。那时,对给定 Foo 实例的引用无论如何都将为空,所以我希望 GC 无论如何都会回收该内存。
这些帖子让我相信将成员变量设置为 null 是没有意义的:
Memory leak problems: dispose or not to dispose managed resources?
Is it better to destroy all objects or just let the garbage collector do the job?
这篇文章让我质疑: Proper use of the IDisposable interface
谁能为我澄清这一点?这里真的需要 IDisposable 实现吗?因为我无法说服自己确实如此。
【问题讨论】:
-
“正确使用链接”有一个很长的模糊答案,“任何意义”链接是你应该阅读的。摘要:这样做没有意义。
标签: c# .net garbage-collection idisposable