Agan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年3月11日

摘要: 原文: http://www.cnblogs.com/mickeychang/archive/2009/09/17/1568670.html通过本文你会理解如何通过finalize dispose模式提升GC算法的性能。下图显示完成本文后的对比。 介绍和目标 问一下每一个开发人员,在.Net类中清除非托管资源的最好位置在哪里?他们中的70%的人员会说放在析构函数。尽管看起来好象是最有希望的位置,但那对性能和内存消耗有巨大的影响。在析构函数中写清理代码会导致垃圾回收器再次调用,而且多次(multifold times)影响性能。 为了验证上面所说,我们先从理论开始,然后我们会真实的看到使用析构函 阅读全文
posted @ 2011-03-11 13:44 Alan Gan 阅读(235) 评论(0) 推荐(0) 编辑

摘要: 来自:http://www.cnblogs.com/RicCC/archive/2009/09/01/dotnet-memory-management-and-garbage-collection.html 1. Stack和Heap 每个线程对应一个stack,线程创建的时候CLR为其创建这个stack,stack主要作用是记录函数的执行情况。值类型变量(函数的参数、局部变量 等非成员变量)都分配在stack中,引用类型的对象分配在heap中,在stack中保存heap对象的引用指针。GC只负责heap对象的释 放,heap内存空间管理 Heap内存分配 除去pinned object等影响 阅读全文
posted @ 2011-03-11 13:30 Alan Gan 阅读(90) 评论(0) 推荐(0) 编辑

摘要: 来自:http://www.cnblogs.com/RicCC/archive/2009/09/01/dotnet-memory-management-and-garbage-collection.html 1. Stack和Heap 每个线程对应一个stack,线程创建的时候CLR为其创建这个stack,stack主要作用是记录函数的执行情况。值类型变量(函数的参数、局部变量 等非成员变量)都分配在stack中,引用类型的对象分配在heap中,在stack中保存heap对象的引用指针。GC只负责heap对象的释 放,heap内存空间管理 Heap内存分配 除去pinned object等影响 阅读全文
posted @ 2011-03-11 13:29 Alan Gan 阅读(285) 评论(0) 推荐(0) 编辑

摘要: 便于对文章的开展,需要先明确两个概念。 第一个就是很多人用.Net写程序,会谈到托管这个概念。那么.Net所指的资源托管到底是什么意思,是相对于所有资源,还是只限于某一方面资源?很多人对此不是很了解,其实.Net所指的托管只是针对内存这一个方面,并不是对于所有的资源;因此对于Stream,数据库的连接,GDI+的相关对象,还有Com对象等等,这些资源并不是受到.Net管理而统称为非托管资源。而对于内存的释放和回收,系统提供了GC-Garbage Collector,而至于其他资源则需要手动进行释放。 那么第二个概念就是什么是垃圾,通过我以前的文章,会了解到.Net类型分为两大类,一个就是值类型 阅读全文
posted @ 2011-03-11 11:00 Alan Gan 阅读(124) 评论(0) 推荐(0) 编辑