项目启动增加定时器手动清理
1 public class Program 2 { 3 [DllImport("psapi.dll")] 4 static extern int EmptyWorkingSet(IntPtr hwProc); //清理内存相关 5 6 static void Main() 7 { 8 //启动定时清理内存 9 SetTimer(); 10 } 11 /// <summary> 12 /// 定时清理内存 13 /// </summary> 14 private static void SetTimer() 15 { 16 System.Timers.Timer aTimer = new System.Timers.Timer(); //初始化定时器 17 aTimer.Interval = 60000;//配置时间1分钟 18 aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent); 19 aTimer.AutoReset = true;//每到指定时间Elapsed事件是到时间就触发 20 aTimer.Enabled = true; //指示 Timer 是否应引发 Elapsed 事件。 21 } 22 //定时器触发的处理事件 23 private static void OnTimedEvent(Object source, ElapsedEventArgs e) 24 { 25 26 //清理内存 27 GC.Collect(); 28 GC.WaitForPendingFinalizers(); 29 Process[] processes = Process.GetProcesses(); 30 foreach (Process process in processes) 31 { 32 //以下系统进程没有权限,所以跳过,防止出错影响效率。 33 if ((process.ProcessName == "System") && (process.ProcessName == "Idle")) 34 continue; 35 try 36 { 37 EmptyWorkingSet(process.Handle); 38 } 39 catch 40 { 41 } 42 } 43 } 44 45 }