我想了解非托管资源。谁能给我一个基本的想法?
托管资源基本上是指由垃圾收集器管理的“托管内存”。当您不再有对托管对象(使用托管内存)的任何引用时,垃圾收集器将(最终)为您释放该内存。
非托管资源就是垃圾收集器不知道的一切。例如:
通常,您希望在失去对管理它们的对象的所有引用 之前释放这些非托管资源。 您可以通过调用Dispose该对象来执行此操作,或者(在 C# 中)使用using将为您处理调用的语句Dispose。
Dispose
using
如果您Dispose正确地忽略了非托管资源,垃圾收集器最终会在包含该资源的对象被垃圾收集时为您处理它(这是“终结”)。但是由于垃圾收集器不知道非托管资源,它无法判断释放它们需要多严重 - 因此您的程序可能执行不佳或完全耗尽资源。
如果您自己实现了一个处理非托管资源的类,则由您自己来实现Dispose和Finalize正确地实现。
Finalize