日期:2014-05-18 浏览次数:21700 次
#region 清空内存
        [DllImport("kernel32.dll")]
        public static extern bool SetProcessWorkingSetSize(IntPtr process,
            int minSize,
            int maxSize
            );
        /// <summary>
        /// 在占用大量内存的窗体关闭时执行,释放内存
        /// </summary>
        public static void FlushMemory()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                FormFunction.SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
            }
        }
        #endregion
------解决方案--------------------
既然你的数据已经读到内存中了,只是在开启子窗口时内存加大
应该是你也使用了同样的数据,并且是你主窗体中数据的副本
你可以用静态变量存放你的数据,它在内存中是只有一份的,这样在你开启子窗体时内存就不会涨的那么多
------解决方案--------------------
.net的垃圾回收机制不是手动能控制的,你尝试下在子窗体里写个析构函数用来释放所声明的数组。