十年风雨路 · 一心铸精品

接一个官网 留一件精品 做一个项目 树一块样板

漫谈C#开发中的垃圾回收机制

GC的前世与今生虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图

时间:2013年04月24日 点击量:

GC的前世与今生
虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是GC的第一次出现。Lisp的程序员认为内存管理太重要了,所以不能由程序员自己来管理。但后来的日子里Lisp却没有成气候,采用内存手动管理的语言占据了上风,以C为代表。出于同样的理由,不同的人却又不同的看法,C程序员认为内存管理太重要了,所以不能由系统来管理,并且讥笑Lisp程序慢如乌龟的运行速度。的确,在那个对每一个Byte都要精心计算的年代GC的速度和对系统资源的大量占用使很多人的无法接受。而后,1984年由Dave Ungar开发的Small talk语言第一次采用了Generational garbage collection的技术(这个技术在下文中会谈到),但是Small talk也没有得到十分广泛的应用。
直到20世纪90年代中期GC才以主角的身份登上了历史的舞台,这不得不归功于Java的进步,今日的GC已非吴下阿蒙。Java采用VM(Virtual Machine)机制,由VM来管理程序的运行当然也包括对GC管理。90年代末期.NET出现了,.NET采用了和Java类似的方法由CLR(Common Language Runtime)来管理。这两大阵营的出现将人们引入了以虚拟平台为基础的开发时代,GC也在这个时候越来越得到大众的关注。
为什么要使用GC呢?也可以说是为什么要使用内存自动管理?有下面的几个原因:
1、提高了软件开发的抽象度;
2、程序员可以将精力集中在实际的问题上而不用分心来管理内存的问题;
3、可以使模块的接口更加的清晰,减小模块间的偶合;
4、大大减少了内存人为管理不当所带来的Bug;
5、使内存管理更加高效。

推荐案例

  • 成都森美啦园林绿化工程公

  • 四川尚恒科技有限公司

  • 成都九邦物流有限责任公司

  • 四川品睿餐饮管理有限公司

  • 美绘陶社陶艺手绘工作室-暖

  • 成都恩多施生物工程技术有

  • 汶川羌人土特产有限公司

  • 印刷设计公司网站No.3138

联系我们 / CONTACT US

  • 四川省成都市金牛区五福桥东路229号龙湖北城天街28栋903室
  • 服务热线:400-000-2367 028-86088588
  • 总机:028-62322623-0
  • 传真:028-62322623-823

扫码访问冠辰手机网站

版权所有 Copyright © 2002-2019 四川冠辰科技开发有限公司  www.scgckj.com 保留所有权利  蜀ICP备11012605号

地址:四川省成都市金牛区五福桥东路229号龙湖北城天街28栋903室

服务热线:400-000-2367 028-86088588 总机:028-62322623-0 传真:028-62322623-823