C#内存占用大量资源的解决办法

        昨天,独立完成了一个项目,一直运行起,起初运行内存为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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

posted @ 2013-09-25 09:20  橙&子  阅读(1709)  评论(0编辑  收藏  举报