- 来源:新浪科技 作者:新闻小生 时间:2008-05-18 10:58:42
-
【IT168技术文档】
在C++中,令程序员最头疼的是对内存的分配和管理。在.net下,事情容易多了。.net引用了垃圾回收(GC)功能,它替代了程序员对于清除无用对象的工作。虽然在大多数情况下,内存的回收我们不用再去理会,但如果能够在程序中适时地添加一些内存管理的工作,可以使程序更加的优化。
由于CLR(公共语言运行时)可以知道在系统中的所有对象引用,因此在运行时,GC可以获取对象是否被引用的信息。如果一个对象不再被引用,则通过GC进行自动回收。
不过GC回收的条件是,当特定资源不够用时才执行。如果我们希望自己控制,也可以显示地指示GC工作。方法是:
System.GC.Collect();
GC在进行回收时,先会识别对象是否被引用,并标记出对象的特征。只有不被引用的对象才被回收。为避免堆碎片,GC在回收了对象后,会重新分配内存,并对未被回收的对象进行重定位。这必然导致GC在回收时会导致系统运行性能的降低。
适时的进行人工干预内存分配,是比较好的选择。我们知道在C++中,对于创建的类中,有相对应的析构函数进行内存的删除。在C#中,也可以采用同样的方式。当实例化一个类对象后,删除它,则自动调用其析构函数。CLR提供了对象终结(object finalization)的机制,引入了Finalize方法。不过在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的 Finalize()方法。
GC的回收机制是异步操作,我们可以使用CLR提供的Dispose()方法实现对每一个对象的删除操作。Dispose()方法由IDiposable接口提供。因此对于将要实例化的类对象,实现Dispose操作,必须使类实现该接口,并提供Dispose()方法。
public
-
- 标签: 管理 内存 CLR
-
上一篇:.Net Framework 2.0中的Compression功能
下一篇:ASP.Net中控件的EnableViewState属性
-
[收藏]
[推荐]
[评论]
[打印]
[关闭]
点击:
- ASP.Net中控件的EnableViewState属性 1970-01-01 08:00:00
- CLR中的内存管理 2008-05-18 10:58:42
- 【IT168技术文档】 在C++中,令程序员最头疼的是对内存的分配和管理。在.net下,事情容易多了。.net引用了垃圾回收(GC)功能,它替代了程序员对于清除无用对象的工作。虽
- .Net Framework 2.0中的Compression功能 2008-05-18 10:58:05
- 【IT168技术文档】 以前做项目的时候,需要提供文件压缩功能。当时是使用了一个开源的类库,名为ZipLib,使用起来还是很方便的。我还在自己的英文博客上post了一篇文章《Zi
- .Net 2.0中的DriveInfo类 2008-05-18 10:57:37
- 【IT168技术文档】 在.Net 1.1中,要获得磁盘信息,只有通过Win32的API来获得,例如: //
- 使用PagedDataSource类实现DataList和Repeater控件的分页显示 2008-05-18 10:56:59
- 【IT168技术文档】 Asp.net提供了三个功能强大的列表控件:DataGrid、DataList和Repeater控件,但其中只有DataGrid控件提供分页功能。相对DataGrid,DataList和Repeater控
- 播放嵌入资源的声音文件 2008-05-18 10:56:11
- 【IT168技术文档】 要在Windows Mobile上播放嵌入资源(Embedded Resource)的声音文件,该怎么办呢?显然是要用到反射的,我查了一下MSDN,还好GetManifestResourceStream
- Anthem.NET扩展控件autoSuggest使用与修改 2008-05-18 10:55:59
- 【IT168技术文档】 最近客户提出根据用户姓名的拼音来查找用户的要求,于是很自然的想到了autosuggest控件。autosuggest控件是Anthem.net里的扩展控件,效果相当不错。但是
- 仅需105元 就买TP-LINK最实用ADSL猫 2008-05-18 06:57:06
- 作者:赵健锋 TP-LINK又有一款性价级的ADSL投入了市场,这款产品的型号为TD-8620,功能比较简单,是个人用户、家庭办公室和小型企业实现Internet访问的最佳解决方案。 它符