由于垃圾收集无法清除非托管代码。要清除非托管代码,我们使用 dispose 方法,但反之亦然?我们可以使用 dispose 方法清除管理代码对象吗?
问问题
152 次
2 回答
4
方法Dispose
实现可能会将某些字段设置为null
,从而可能使“子”对象符合垃圾回收条件,即使包含对象本身不符合垃圾回收条件。
但它不能强行删除对象——最接近的方法是调用GC.Collect
.
Dispose
当然,根本不需要清除字段 - 例如,使用,即使在处理它之后MemoryStream
,您也可以访问流中的数据(通过ToArray
或)。GetBuffer
通常最好(IMO)让垃圾收集器继续它擅长的事情。
于 2013-07-12T16:49:57.277 回答
0
如果您确实需要强制执行此操作 - 您可以在您的类上实现 IDisposable ,然后在using(){}
它超出范围时在一个块中使用它,它将在下一个周期被清理GC.Collect
,这可以通过调用该方法来强制执行。
于 2013-07-12T16:59:26.813 回答