0

我已经在 .net 中阅读了一些关于内存管理的想法,但是我没有回答以下三个问题

  1. 非托管资源在用于托管资源的同一托管堆中获取内存以及谁分配它(OS OR CLR 或其他任何东西)?
  2. 在托管资源 R 上调用 Dispose() 方法,将立即释放该 R 占用的内存以及 R 占用的所有其他非托管资源
  3. Who 清除被取消管理的资源(OS OR CLR 或其他)占用的内存。

欢迎任何帮助。

4

1 回答 1

1

1)。创建非托管资源的代码。例如,Win32 文件句柄由操作系统内核分配。

2)。释放非托管资源取决于 Dispose 方法的实现。例如,它可以调用 Win32 CloseHandle 来关闭文件句柄。托管资源仍然存在,只是通过 GC 释放。

3)。Dispose 方法实现,通常调用原生函数。

于 2012-07-13T04:59:01.090 回答