首页 > Windows开发 > 详细

关于C#内存释放的BUG?

时间:2020-12-12 12:23:08      阅读:36      评论:0      收藏:0      [点我收藏+]
using System;
class MyData
{
    public int[] dat;
    public MyData(int size)
    {
        dat = new int[size];
        Console.WriteLine($"构造");

    }

    ~MyData()
    {
        Console.WriteLine($"析构");
    }
}

class MyGCCollectClass
{
    static MyData theData;
    static void Main()
    {
        //测试1
        MyGCCollectClass.MakeSomeGarbage1();

        //测试2
        //MyGCCollectClass.MakeSomeGarbage2();
        //theData = null;

        //测试3
        //var vt = new MyData(1024 * 1024 * 1024);
        //vt = null;

        //测试4
        //theData = new MyData(1024 * 1024);
        //theData = null;

        Console.WriteLine("Memory used before collection:       {0:N0}", GC.GetTotalMemory(false));

        GC.Collect(); 

        Console.WriteLine("Memory used after full collection:   {0:N0}", GC.GetTotalMemory(true));

        /*** 测试结果
         * 成功回收:测试1,测试2
         * 不能回收:测试3,测试4
         */
        Console.Read();
    }

    static void MakeSomeGarbage1()
    {
        theData = new MyData(1024*1024);
        theData = null;
    }

    static void MakeSomeGarbage2()
    {
        theData = new MyData(1024 * 1024);
    }
}

 

关于C#内存释放的BUG?

原文:https://www.cnblogs.com/timeObjserver/p/14123788.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!