0

据我所知,我知道 GC 执行收集操作是为了删除非托管资源以释放内存,这称为隐式清理。通过使用“USING”关键字,我们可以进行显式清理,但我怀疑 GC 是如何释放托管资源的。

4

1 回答 1

2

您无需执行任何特殊操作即可让 GC 清理您的托管资源。GC 将在没有对您的托管资源的引用后的某个时间清理它。

如果您的托管资源拥有非托管资源,您可以实现IDisposable接口并调用该Dispose方法,您将在其中显式清理您的非托管资源。using语句使这个接口的使用变得非常容易,因为它会在代码存在using块时自动调用 Dispose,即使在出现异常的情况下也是如此。

您可以查看有关垃圾收集的 MSDN 文档。

编辑:根据上面的评论。

可以通过定义终结器(例如~MyClass())来覆盖Object.Finalize,但不知道何时它会被 GC 调用。IDisposable 通常是首选。有关 Finalizer 与 Dispose的更多信息。

于 2012-06-15T07:06:17.473 回答