RAM-Benutzung der eigenen Anwendung zurücksetzen

Heute stand ich vor einem sehr interessanten Problem. Meine Anwendung hat über die Laufzeit so viel RAM verbraucht, dass der Rechner allgemein recht langsam wurde. Und das trotz einer ordentlichen Ausrüstung.

Als kleinen Quick-And-Dirty-Behelf habe ich mir dann eine Funktion zurechtgefrickelt, welche den RAM-Verbrauch für den aktuell laufenden (also den eigenen) Prozess zurücksetzt.

Die Funktion gibt es natürlich mal wieder nicht in den .NET-Boardmitteln. Darum muss man sich eine passende Funktion aus der kernel32.dll holen:

Wenn man nun die Funktion FreeUpMem() in seiner Anwendung aufruft, wird das aktuelle WorkingSet im RAM auf -1 gesetzt und somit alles, was durch den Prozess verbraucht wurde, wieder freigegeben.

Doch vorsicht: Im WorkingSet hängen auch Dateien, die man grad geöffnet hat, oder ähnlich! Man sollte sich im Klaren sein, dass man mit dieser Funktion auch Schaden anrichten kann!