关于C#内存释放的BUG?
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); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步