Feedback

C# - Arbeitsspeicher freiräumen

Veröffentlicht von am 02.05.2008
(3 Bewertungen)
Ich hab hier mal die VB Variante von http://dotnet-snippets.de/dns/ungenutzten-arbeitsspeicher-freiraeumen-SID821.aspx nach C# portiert.
        [DllImport("kernel32.dll")]
        public static extern int SetProcessWorkingSetSize(IntPtr process, int minimumWorkingSetSize,
            int maximumWorkingSetSize);        
        /// <summary>
        /// Flushes the memory
        /// </summary>
        public static void FlushMemory()
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
                SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1);
        }
Abgelegt unter flushmemory, flush, memory, arbeitsspeicher.

3 Kommentare zum Snippet

Patrick Löwer schrieb am 02.05.2008:
Da fehlt doch noch was oder? wäre nett wen du es noch ergänzen würdest.
Macximilian schrieb am 02.05.2008:
Ja, korrekt, so müsste es funktionieren, wäre nett wenn du den DllImport noch einfügen könntest:


[DllImport("kernel32.dll")]
public static extern bool SetProcessWorkingSetSize(IntPtr proc, int min, int max);

public void FlushMemory()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess()
.Handle, -1, -1);
}
}

Greenberet schrieb am 03.05.2008:
danke für den hinweis, ich hab den snippet editiert
 

Logge dich ein, um hier zu kommentieren!