Я много искал о выпуске памяти при закрытии формы, , но я не нашел решения для выпуска памяти, используемой формой. Большая часть ответа в stackoverflow или других форумах - форма.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 - оставить управление памятью сборщиком мусора. Есть лучшие методы, такие как вызов Dispose() на IDisposable, но не уверен, чего вы пытаетесь достичь здесь? – Kevin