我在表格關閉時搜索了很多關於釋放內存的東西, 但我沒有找到任何解決方法來釋放表單使用的內存。 大多數在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