什么是托管资源和非托管资源?

sly*_*dan 1 .net

我们什么时候应该进行内存管理?我们如何针对这两种资源进行内存管理?托管和非托管资源的列表是什么?我们真的需要担心内存泄漏吗?

Ode*_*ded 5

托管资源是那些完全用.NET编写的资源.虽然通常不会受到经典内存泄漏的影响,但仍然可以通过不解除引用未使用的资源来泄漏内存(最常见的原因是不取消注册事件处理程序).

非托管资源通常是那些不是纯.NET(并且在同一个进程中)的资源 - 例如:

  • COM组件
  • 数据库连接/事务
  • 窗把手
  • 文件系统句柄
  • 注册表处理
  • 网络连接
  • 等......等等......

对于这些,您需要Dispose正确实施模式,并确保在使用完毕后正确处理.

我们真的需要担心内存泄漏吗?

是的,我们确实需要担心它们,特别是在走出.NET之外.