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