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

来源:互联网 发布:java职位描述怎么写 编辑:程序博客网 时间:2024/05/16 06:08

        昨天,独立完成了一个项目,一直运行起,起初运行内存为15Mb左右,但是发现内存以每秒2Mb的速度增加,吓了我一跳(注:我实习生,我的工作中第一个项目)。从头找寻对象,再来dispose,弄得我晕头转向的。

 

占用23M中····

 

        于是乎,我想到了定时控件,每多少秒,去销毁计算机中无用的内存。我的方法是调用API,SetProcessWorkingSetSize函数。其用法如下:

 

        #region 内存回收        [DllImport("kernel32.dll")]        private static extern bool SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);        private static void FlushMemory()        {            GC.Collect();            GC.WaitForPendingFinalizers();            if (Environment.OSVersion.Platform == PlatformID.Win32NT)                SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);        }        #endregion        // 定时销毁不用的内存        private void timer1_Tick(object sender, EventArgs e)        {            FlushMemory();        }


 

使用了这个,内存占用就1Mb左右。

 

我不晓得这方法比C#的dispose等好不好,请各位大神指教。