懒惰<;T>;在GC眼中
本文关键字:GC 眼中 lt 懒惰 gt | 更新日期: 2023-09-27 18:29:19
我想知道:GC
如何看待Lazy
对象
即:
Lazy<Foo> f = new Lazy<Foo>( );
"懒惰实例化"推迟对象的创建,直到它被实际访问
这里的f
是对象的根吗?(这意味着他不会被录取)?
(此时对象尚未创建…稍后其他代码会在其中添加值)
或
GC将其视为未引用/未初始化的对象,并对其进行GC检查
这是我需要处理的事情吗?(/害怕?)
public class Foo
{
public int ID { get; set; }
public Foo()
{
ID = 1;
}
}
f
实际上是对Lazy<Foo>
实例的引用。封装的Foo
实例是独立的,但可以间接访问(保持)。
只要f
存在,即它是根或它是可访问的,实例就不会(不能)被收集。
GC并没有什么特别之处。不要将Lazy与WeakReference混淆。