您的位置:首页 > 其它

关于.NET的内存管理机制

2011-12-28 22:54 246 查看
C#语言是基于windows的托管类型语言,其实托管是这里的意思是.NetFramework对内存的管理,大大减少了程序员的工作,也提升了程序的安全性,但是牺牲了运行效率。而且.NetFramework对内存的管理中不包括数据库连接对象、流对象、COM组件的释放。所以我们把上述对象称为非托管对象,非托管对象需手动释放内存。

那么C#的内存管理,我们就可以从两方面进行理解,第一,托管对象的内存管理机制;第二,非托管对象内存管理机制。

托管对象释放内存时有二个前提,一是该对象及该对象包涵的对象都没有了外部引用,二是该对象继承了IDispose接口,然后由垃圾收集器回收内存。垃圾收集器在物理上统一管理内存,而在逻辑上为执行死循环的一个线程,在循环中依次探知每一个托管对象的引用情况,若探知到对象符合上述前提时,就释放该对象的内存。从这里可以得知C#语言为何运行效率较慢的原因了。所以我们为提升运行效率的方法,就是使垃圾收集器立刻运行到需要回收内存的地方,即调用GC.Collect()即可。

托管对象的内存释放较为简单,而非托管对象的内存释放则复杂一些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: