小伙伴在一次垃圾回收中,发现对象并没有被回收掉,而注释掉一句代码后它便能够回收。
这究竟是为什么?
不关心探索过程的就直接拉到最后看结论吧!
探索
测试代码是这样的:
private void OnLoaded(object sender, RoutedEventArgs e)
{
var variable = new MainPage();
var reference = new WeakReference<MainPage>(variable);
variable = null;
GC.Collect();
Console.WriteLine($"{reference.TryGetTarget(out var target)}: {target}");
DoSomething(x => DoAnotherThing(x));
}
需要验证的是 MainPage
对象是否被回收。然而