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