public class FlushMemUtil
{
public static void StartTimer()
{
#region 定时整理内存
var flushTimer = new Timer(FlushMemory);
flushTimer.Change(TimeSpan.FromSeconds(30), TimeSpan.FromSeconds(30));
#endregion
}
#region 定时刷新内存
/// <summary>
/// 刷新内存
/// </summary>
static void FlushMemory(object sender = null)
{
try
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
Win32API.SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
}
}
catch (Exception e)
{
LogHelper.WriteErrLog(e.Message, e);
}
}
#endregion
}
[DllImport("kernel32.dll")]
internal static extern bool SetProcessWorkingSetSize(IntPtr proc, int min, int max);