第九章 良构类型

来源:互联网 发布:java 高并发http请求 编辑:程序博客网 时间:2024/05/17 01:17

1、垃圾回收
垃圾回收是“运行时”的重要功能,作用是回收不再被引用的对象所占的内存。这里回收的只是引用和内存,不包括数据库连接、网络端口、句柄以及硬件端口等。

在一次垃圾回收周期开始的时候,它识别所有的根引用(静态变量、CPU寄存器以及局部变量或者参数实例)。基于此列表,垃圾回收可以遍历每个根引用所标识的树形结构,并递归确定所有根引用指向的对象。这样,垃圾回收就可以识别出所有可达对象。

执行垃圾回收时,垃圾回收不是枚举所有访问不到的对象,相反,它将所有可达对象紧挨着放在一起,从而覆盖不可访问对象所占用内存。

.NET垃圾回收的特别之处在于,并非所有垃圾都一定会在一个垃圾回收周期中清除。而是已更快的频率尝试清除生存时间较短的对象。生存时间较长的对象会以较低的频率清除。

2、弱引用

弱引用不禁止对象进行垃圾回收,但会维持一个引用。如果对象没有被清除,就可以重用。弱引用是为创建开销和维护开销比较的对象而设计的。

创建弱引用

Object obj = new Object;

WeakReference wref = obj;

从弱引用获取强引用

Object obj2 = wref.Target;

原创粉丝点击