【发布时间】:2015-07-16 23:21:06
【问题描述】:
我知道我应该只对大型对象使用 WeakReference,但我对以下场景感到好奇:
object obj = 1; //Int32
var wk = new WeakReference(obj);
Console.WriteLine(wk.IsAlive); //Prints: True
obj = null;
GC.Collect(2, GCCollectionMode.Forced, true);
Console.WriteLine(wk.IsAlive); //Prints: false, All Rigth!
目前还好。
看这个:
object obj = "test"; //String
var wk = new WeakReference(obj);
Console.WriteLine(wk.IsAlive); //Prints: True
obj = null;
GC.Collect(2, GCCollectionMode.Forced, true);
Console.WriteLine(wk.IsAlive); //Prints: True, Why?
发生了什么事?
【问题讨论】:
标签: c#