方法1:(将dispose内的方法写在你占用内存的循环或者操作处就可以了)
[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 void Dispose()
{
GC.Collect();
GC.SuppressFinalize(this);
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}
https://www.cnblogs.com/pdfw/archive/2009/04/22/1441477.html
方法2:(这个方法也可以达到要求,将System.Diagnostics.Process.GetCurrentProcess().Handle
传入就可以了)
[DllImport("psapi.dll")]
static extern int EmptyWorkingSet(IntPtr hwProc);
public void ClearMemory()
{
Process[] process;//这个数组存放当前的所有进程信息
process = Process.GetProcesses();//取得进程信息
try
{
for (int i = 0; i < process.Length; i++)
EmptyWorkingSet(process[i].Handle);//依次释放每个进程的内存
}
catch
{
}
}
https://www.cnblogs.com/zhahost/archive/2008/06/02/1212417.html