在托管对象上实现 Dispose() 也可以通过从 中获取提示来提高垃圾收集器的性能,从而可能绕过其整个过程的某些部分。
我看到了这个answer关于一个没有得到高票数的问题,但这是真的吗?如果是的话怎么办?
No that is wrong. I agree with Aaronaught. In addition, Microsoft recommends, in a mid 2003 webcast that Don Box presented, that every .Net developer should dispose of their own objects, whether managed or unmanaged, as this improves code performance by anything upto 20%. If done right it can be a substantial performance improvement. So its a core skill that every .net developer needs to know and use.
最佳答案
您根本不能以与调用Dispose
释放文件句柄等相同的方式Dispose
托管内存。可以清理托管内存的是垃圾收集器。
您可以使用一个Dispose
方法将类中的所有变量设置为null
,希望这能让垃圾收集器尽早收集所有先前引用的对象 - 但在极少数情况下它实际上会有所帮助,因为通常您的对象无论如何都会同时符合收集条件。它还会让您的代码更加难以遵循。
在大多数情况下不必担心对象的生命周期是 C# 的好处之一 - 为什么要通过让每个类都实现 IDisposable 来摆脱它?
?您真的想自己管理“所有权”和生命周期吗?
我怀疑您误读了您在问题中引用的答案(诚然有点不清楚)。我不认为它提倡处置所有对象 - 我相信它提倡明确处置已经实现IDisposable
的类型实例。这与纯托管类型无关,后者几乎从不实现 IDisposable
。
关于.net - 处理托管对象是否可以提高 .Net 的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620504/