C#有自动回收内存的机制,但是有时自动回收有一定滞后,需要在变量使用后迅速回收,节约内存,这里介绍一个最简单的方法。
1.先对对象赋值 null;
2.使用System.GC.Collect()
代码如下:class Program
{
static void Main(string[] args)
{
long lenth = 1024 * 1024 * 128;
GetCost("程序启动");
double[] data = new double[lenth];
for (int i = 0; i < lenth; i++)
{
data[i] = double.MaxValue;
}
GetCost("数据制造完成");
data = null;
GetCost("data = null");
System.GC.Collect();
GetCost("System.GC.Collect()");
Console.ReadKey();
}
/// <summary>
/// 显示内存使用的状态
/// </summary>
/// <param name="state"></param>
static void GetCost(string state)
{
Console.Write("当前状态:" + state + "; 占用内存:");
using (var p1 = new PerformanceCounter("Process", "Working Set - Private", "GCtest.vshost"))
{
Console.WriteLine( (p1.NextValue()/1024/1024).ToString("0.0")+"MB");
}
}
新闻热点
疑难解答
图片精选