代码改变世界

[原创]怎么降低Winform程序占用的内存

2011-03-18 09:23  刺客之家  阅读(881)  评论(4编辑  收藏  举报

前段时间一直纠结于一个问题, winform程序占用的内存数一直居高不下,提供给用户的手册中说明内存不能大于50MB,但是每次运行的时候,内存都会飙高到100多MB.

后来终于发现了一个方法,可以解决这个问题:    

  #region 内存回收

        [DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]
        public static extern int SetProcessWorkingSetSize(IntPtr process,
            int minSize,
            int maxSize
);

        /// <summary>
        /// 释放内存
        /// </summary>
        public static void ClearMemory()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                App.SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
            }
        }

        #endregion
 

在程序中用一个计时器,每隔几秒钟调用一次该函数,打开任务管理器,你会有惊奇的发现。

本博客文章若非标记转载,均为原创,转载请注明出处~