CLR内存管理之GC的工作原理

摘要: 前两篇文章中,讲CLR的内存管理,都提到了垃圾回收器(GC)的作用。那么GC具体是怎么在虚拟内存中进行存储空间的监控和释放的呢?下面就介绍一下这个过程:什么是GC?正如其名,Garbage Collector,垃圾收集器,也就是说,GC的主要任务就是垃圾的清理。以应用程序的root为基础,遍历应用程序在Heap上动态分配的所有对象,通过识别它们是否被引用来确定哪些对象是已经死亡的哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。这就是GC工作的原理。为了实现这个原理,GC有多种算法。比较常见的算法有Reference Count 阅读全文
posted @ 2013-01-20 19:02 yonghuisoft 阅读(1166) 评论(0) 推荐(1)

CLR内存管理之释放非托管资源

摘要: 上篇文章中我提到,CLR通过栈指针给变量分配内存空间,通过GC来释放不再引用的内存空间。GC虽然减少了程序员处理内存的困难,但它也有局限性,它不能处理像文件句柄、网络连接、数据库连接这样的非托管资源。在定义一个类时,我们使用两种机制来自动释放非托管资源:1,声明一个析构函数(或终结器finalizer),作为类的一个成员2,在类中实现System.IDisposable接口析构函数:析构函数的声明格式如下class Hotel{ ~Hotel() { //destructor implementation }}在GC销毁对象之前,会... 阅读全文
posted @ 2013-01-20 12:35 yonghuisoft 阅读(957) 评论(0) 推荐(0)

CLR内存管理简介

摘要: 使用c#语言编写应用程序的一个好处就是不需要担心内存的管理,垃圾回收器(GC)会自动执行所有的内存清理工作。但是,了解内存的管理过程对于提高程序的性能还是有必要的,下面就简单介绍一下CLR的内存管理过程:Windows使用虚拟寻址系统来管理内存,该系统把程序实际可用的内存地址映射到硬件内存中的实际地址上,带来的结果是32位处理器上的每个进程都可以使用4GB的内存,无论计算机上实际有多少硬盘空间(如果是64位处理器,可用内存会更大)。这个4GB的内存包含了程序的所有部分,可执行代码、要加载的DLL,程序运行使用的所有变量内容。这4GB的内容空间,就成为虚拟地址空间或者虚拟内存。CLR的内存管理的 阅读全文
posted @ 2013-01-19 18:43 yonghuisoft 阅读(1197) 评论(0) 推荐(1)