在.net中对内存管理的几个问题

时间:2012-06-27 10:18:48

标签: .net garbage-collection unmanaged-memory

我已经阅读了一些关于.net内存管理的想法,但是有三个问题没有得到答复

  1. 非托管资源获取用于托管资源的相同托管堆中的内存以及分配它的内存(OS OR CLR还是其他任何内容)?
  2. 在托管资源R上调用Dispose()方法,会立即释放此R占用的内存以及R占用的所有其他非托管资源
  3. 谁清除非管理资源占用的内存(操作系统或CLR或其他任何内容)。
  4. 欢迎任何帮助。

1 个答案:

答案 0 :(得分:1)

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

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

3)。处理方法实现,通常调用本机函数。