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