昨天,独立完成了一个项目,一直运行起,起初运行内存为15Mb左右,但是发现内存以每秒2Mb的速度增加,吓了我一跳(注:我实习生,我的工作中第一个项目)。从头找寻对象,再来dispose,弄得我晕头转向的。
占用23M中····
于是乎,我想到了定时控件,每多少秒,去销毁计算机中无用的内存。我的方法是调用API,SetProcessWorkingSetSize函数。其用法如下:
1 #region 内存回收 2 [DllImport("kernel32.dll")] 3 private static extern bool SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize); 4 private static void FlushMemory() 5 { 6 GC.Collect(); 7 GC.WaitForPendingFinalizers(); 8 if (Environment.OSVersion.Platform == PlatformID.Win32NT) 9 SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1); 10 } 11 #endregion 12 13 // 定时销毁不用的内存 14 private void timer1_Tick(object sender, EventArgs e) 15 { 16 FlushMemory(); 17 }
使用了这个,内存占用就1Mb左右。
我不晓得这方法比C#的dispose等好不好,请各位大神指教。
作者:orange1438 出处:http://www.cnblogs.com/orange1438/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。