在我的应用程序中,我有一个每隔几秒钟创建一次的大对象。我用它做一些工作,然后我不再需要它了。
我在任务管理器中看到,即使我没有对该对象的任何引用并且需要收集它,ram 的大小也会增加。
实施后IDisposable
,ram 立即下降。
为什么是这样?我没有这样做GC.Collect
,我只是释放了对象并告诉 GC 它不需要为我的对象调用终结器。
编辑:
这是我用于IDisposable
对象的代码:
public void Dispose()
{
base.Dispose();
Dispose(true);
GC.SuppressFinalize();
}
private void Dispose(bool disposing)
{
//here i release unmanaged resources
if (disposing)
{
//here i release all managed resources
}
}
~MyObject()
{
Dispose(false);
}
在我的大对象中,我myObject.Dispose();
不再需要它之后再做。
我的问题不是关于如何实现IDisposable
或 GC 一般如何工作。我只是想知道当我自己处理对象或让 GC 完成它的工作时会有什么不同。