首页 > 其他分享 >.Net资源管理机制

.Net资源管理机制

时间:2022-12-04 18:11:26浏览次数:42  
标签:对象 托管 资源管理 GC 内存 Net 机制

由于内存是由GC来控制,无论对象网是简单的还是复杂的,都不需要开发者手工去管理,因为GC的Mark and Compact算法会迅速的检测这些关系,并把那些不可达的对象视为一个整体从内存清理出去。

1、GC的检测过程是从应用程序的根对象出发,把与该对象之间没有通路相连的那些对象判定为不可达的对象。应用程序如果不再使用某个实体,那么就不会继续引用它,于是,GC就会发现这个实体是可以回收的。

垃圾回收器每次运行的时候,都会压缩托管堆,以便把其中的活动对象安排在一起,使得空闲的内存能够形成一块连续的区域。类似下图所示:

2、针对托管堆(CLR中内存管理的基础,维护着一个指针,用它指向将在堆中分配的下一个对象的地址)的内存管理工作完全是由垃圾回收器负责,但除此之外的其它资源则必须有开发者来管理。

3、有两种机制可以控制非托管资源的生存期,一种是finalizer,另外一种是IDisposable接口。

finializer是一种防护机制,可以确保对象总是能够把非托管资源释放掉,但这种机制有很多缺陷(没有补充原因),于是,应该考虑通过IDisposable接口来更为顺畅的将资源及时返还给系统。

 

 

【Effective C#读书笔记】

 

标签:对象,托管,资源管理,GC,内存,Net,机制
From: https://www.cnblogs.com/yuzaihuan/p/16950319.html

相关文章