GC垃圾回收
GC垃圾回收(*)
目的:整理内存,回收不在使用的对象,释放内存以提高效率
例子:(餐馆服务生合适收拾餐桌)
学习的要求(重点)
-> 了解GC的作用与简单的步骤
-> 可以简单复述其运行流程
什么时候回收
-> 自动回收
当内存到达一个上限的时候回收
-> 手动回收
实际上GC有一个后台线程在控制,随时监测内存
怎么回收的呢?
使用代来描述对象
每创建一个对象出来,都是第0代
在系统中每一代有一个内存上限
当第0代内存到达上限的时候,垃圾回收器就会执行一次
将没有被引用的对象进行回收,并将保持引用的对象变成第1代
1代什么时候回收?
在Net中总共代数有3代:0代、1代和2代
每一代都是有内存上限的
压缩回收算法
当对象的大小超过85000个字节的时候,对象属于大对象
直接放到第一代不参与第一次回收
在程序中不建议手动实现垃圾回收
由于回收的时候需要实现压缩算法,会让整个程序运行停止
实现垃圾回收以后,重新定位对象,再开始运行