小编Chr*_*.P.的帖子

垃圾收集 - 一个有效,但另一个有效,怎么样?

所以我有这个简单的Bell类,我正在测试垃圾收集:

public class Bell
{
    public void Ring()
    {
        Console.WriteLine("Ding ding");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在下面运行此代码段,则不会收集垃圾

class Program
{
    private static WeakReference reference;

    private static void Main()
    {
        Console.WriteLine("Starting");

        var bell = new Bell();
        reference = new WeakReference(bell);
        bell = null;

        GC.Collect();

        Console.WriteLine("Object still alive: {0}", reference.IsAlive);

        if (reference.Target == null)
        {
            Console.WriteLine("Bell is no more!");
        }
        else
        {
            {
                var theBell = (Bell)reference.Target;
                theBell.Ring();
            }
        }

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我只检查reference.IsAlive如下,它是垃圾收集

class Program
{
    private static WeakReference reference;

    private static void Main() …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection

8
推荐指数
2
解决办法
162
查看次数

标签 统计

c# ×1

garbage-collection ×1