111,129
社区成员
发帖
与我相关
我的任务
分享 /// <summary>
/// 在占用大量内存的窗体关闭时执行,释放内存
/// </summary>
public static void FlushMemory()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}用了这个方法之后,貌似内存占用在关闭的时候也会减少,但是虚拟内存并没有减少,而且一致增加,然后每次关闭B窗口的时候内存占用会减少,但是再次打开,会马上上升到原来的哪个水平,跟(虚拟内存)一样高,相当与累加了前几次的量 /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
FlushMemory();
}
/// <summary>
/// 在占用大量内存的窗体关闭时执行,释放内存
/// </summary>
public static void FlushMemory()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}
private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
GC.Collect();
}