C#托管和非托管的资源(一)——资源

来源:互联网 发布:泼墨门事件知乎 编辑:程序博客网 时间:2024/04/30 13:11

    资源是一个被反复使用的术语。术语“资源”的一个用法是本地化。在本地化中,资源用于翻译文本和图像。基于用户的区域,加载正确的资源。这里,资源用于另一个主题:使用托管和非托管的资源——存储在托管或本机堆中的对象。尽管垃圾收集器释放存储在托管堆中的托管对象,但不释放本机堆中的对象。必须由开发人员自己释放它们。使用托管环境时,很容易被误导,注意不到内存管理,因为垃圾收集器(GC)会处理它。很多工作都由GC完成;

    了解它是如何工作的,什么是大小对象堆,以及什么数据类型存储在堆栈上是非常有益的。同时,垃圾收集器处理托管的资源,那么非托管资源呢?它们需要由开发人员释放。程序可能是完全托管的程序,但是框架的类型呢?例如,文件类型包装了一个本地文件句柄。这个文件句柄需要释放。为了尽早释放这个句柄,最好了解IDisposable接口和using语句。以下介绍内存管理和内存访问的各个方面。如果很好地理解了内存管理和C#提供的指针功能,也就能很好地集成C#代码和原来的代码,并能在非常注重性能的系统中高效地处理内存。