我在表格关闭时搜索了很多关于释放内存的东西, 但我没有找到任何解决方法来释放表单使用的内存。 大多数在stackoverflow或其他论坛的答案是form.Dispose()或GC.Collect()将无助于释放内存。当表格关闭时释放内存
但是我发现了一篇文章Release memory in Windows Form application using C#(http://codesmithdotnet.blogspot.com/2008/02/release-memory-in-windows-form.html)
好在从文章做工精细:)
public class MemoryManagement
{
[DllImportAttribute("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
private static extern int SetProcessWorkingSetSize(IntPtr process, int minimumWorkingSetSize, int maximumWorkingSetSize);
public static void FlushMemory()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}
}
我的问题是代码,是任何人都熟悉有关法 “SetProcessWorkingSetSize”?/怎么运行的? /这种方式有利于释放内存吗?这是否会导致任何问题,或这会使应用程序变慢?
你为什么要这样做? – poke
建议没有这样做,垃圾收集器会为你做。 –
这是.NET - 将内存管理留给垃圾收集器。有一些最佳实践,比如在IDisposable上调用Dispose(),但不确定你想在这里实现什么? – Kevin