日期:2014-05-18 浏览次数:21540 次
#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的垃圾回收机制不是手动能控制的,你尝试下在子窗体里写个析构函数用来释放所声明的数组。