什么是GC,为什么要有GC?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/20 13:42:23
什么是GC,为什么要有GC?

什么是GC,为什么要有GC?
什么是GC,为什么要有GC?

什么是GC,为什么要有GC?
为什么要有GC?首先JAVA和ASP.NET都有GC 垃圾回收 (garbage collection,GC) 一个跟踪过程,它传递性地跟踪指向当前使用的对象的所有指针,以便找到可以引用的所有对象,然后重新使用在此跟踪过程中未找到的任何堆内存.公共语言运行库垃圾回收器还压缩使用中的内存,以缩小堆所需要的工作空间 因为你没有足够多内存,并且,你挺懒,不去自己清理内存,所以就有了 GC 什么是GC GC的全称是garbage collection,中文名称垃圾回收,是.net中对内存管理的一种功能.垃圾回收器跟踪并回收托管内存中分配的对象,定期执行垃圾回收以回收分配给没有有效引用的对象的内存.当使用可用内存不能满足内存请求时,GC会自动进行.在进行垃圾回收时,垃圾回收器回首先搜索内存中的托管对象,然后从托管代码中搜索被引用的对象并标记为有效,接着释放没有被标记为有效的对象并收回内存,最后整理内存将有效对象挪动到一起.这就是GC的四个步骤.由上可见,GC是很影响性能的,所以一般说来这种事情况还是尽量少发生为好.为了减少一些性能影响,.net的GC支持对象老化,或者说分代的概念,代是对象在内存中相对存现时期的度量单位,对象的代数或存现时期说明对象所属的代.目前.net的垃圾回收器支持三代.每进行一次GC,没有被回收的对象就自动提升一代.较近创建的对象属于较新的代,比在应用程序生命周期中较早创建的对象的代数低.最近代中的对象位于零代中.