您的位置:首页 > 编程语言 > C#

C#如何立即回收内存

2017-09-17 11:16 344 查看
1.把对象赋值为null
2.立即调用GC.Collect();

注意:这个也只是强制垃圾回收器去回收,但具体什么时候执行不确定。 

代码:

public partial class Form1 : Form
{
[System.Runtime.InteropServices.DllImportAttribute("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize", ExactSpelling = true, CharSet =System.Runtime.InteropServices.CharSet.Ansi, SetLastError = true)]
private static extern int SetProcessWorkingSetSize(IntPtr process, int minimumWorkingSetSize, int maximumWorkingSetSize);

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
ClearMemory();
}

#region 内存回收
public  void ClearMemory()
{
GC.Collect();
GC.SuppressFinalize(this);

if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}
#endregion

private void timer1_Tick(object sender, EventArgs e)
{
string s="clearMemory";
Form dt = new Form();
dt.Text = s;
//如果垃圾产生于timer中可能无法立刻回收资源,需加载timer tick事件中,立刻回收资源,或使用另外的timer控制回收时间。
   GC.Collect();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: