小编典典

什么是非托管资源?

all

我想了解非托管资源。谁能给我一个基本的想法?


阅读 154

收藏
2022-07-31

共1个答案

小编典典

托管资源基本上是指由垃圾收集器管理的“托管内存”。当您不再有对托管对象(使用托管内存)的任何引用时,垃圾收集器将(最终)为您释放该内存。

非托管资源就是垃圾收集器不知道的一切。例如:

  • 打开文件
  • 打开网络连接
  • 非托管内存
  • 在 XNA 中:顶点缓冲区、索引缓冲区、纹理等。

通常,您希望在失去对管理它们的对象的所有引用 之前释放这些非托管资源。 您可以通过调用Dispose该对象来执行此操作,或者(在 C#
中)使用using将为您处理调用的语句Dispose

如果您Dispose正确地忽略了非托管资源,垃圾收集器最终会在包含该资源的对象被垃圾收集时为您处理它(这是“终结”)。但是由于垃圾收集器不知道非托管资源,它无法判断释放它们需要多严重
- 因此您的程序可能执行不佳或完全耗尽资源。

如果您自己实现了一个处理非托管资源的类,则由您自己来实现DisposeFinalize正确地实现。

2022-07-31