【问题标题】:Few Questions to Memory management in .net.net 内存管理的几个问题
【发布时间】:2012-06-27 10:18:47
【问题描述】:

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

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

欢迎任何帮助。

【问题讨论】:

    标签: .net garbage-collection unmanaged-memory


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多