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?
最新推荐文章于 2023-09-10 18:45:40 发布
本文深入探讨了C#中可能出现的内存释放问题,包括垃圾回收机制、内存泄漏的识别和排查方法。同时,对比了Java和JavaScript在内存管理上的差异,并提供了软件测试中的注意事项,以确保应用程序的稳定性和效率。
摘要由CSDN通过智能技术生成