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);
}
}