Überwachen Sie einen Prozess und beenden Sie ihn, wenn er eine bestimmte Menge an RAM überschreitet

In der StandardCollector.Service.exe von VS2015 gibt es ein Speicherleck, das von Microsoft bestätigt wird, aber erst mit dem nächsten Service Pack behoben wird.

In der Zwischenzeit bekomme ich eine Warnung von Windows, dass der Speicher niedrig ist, und ich finde heraus, dass 7 GB RAM überschritten wurden, und ich lösche ihn. Das würde ich gerne automatisieren.

Anforderungen:

  • Funktioniert unter Windows.
  • Ermöglicht Ihnen, den Prozess anhand des ausführbaren Pfads anzugeben.
  • Hier können Sie angeben, wie viel RAM überschritten werden soll, bevor es gelöscht wird.
  • Ist gratis.

Hier gibt es eine ähnliche (unbeantwortete) Frage - Wählen Sie, welche Programme beendet werden sollen, wenn kein RAM mehr vorhanden ist, aber es unterscheidet sich darin, dass ich nicht warten möchte, bis der Gesamtsystemspeicher langsam wird, ich möchte nur den RAM dieses Prozesses überwachen .

Außerdem gibt es in AskUbuntu eine Frage, die im Grunde dasselbe stellt, aber ich brauche sie für Windows, nicht für Linux.

Antworten (1)

Sie können versuchen, den Arbeitssatz zu löschen, anstatt den Prozess selbst zu beenden.

Verwenden Sie EmptyWorkingSet() , um die RAM-Nutzung einer Anwendung zu löschen, oder legen Sie ihren Maximalwert mit SetProcessWorkingSetSize() fest.

Ich hatte ein ähnliches Problem, Sie könnten dieses Programm erweitern, das derzeit die Prozess-ID anstelle des ausführbaren Pfads benötigt, und es in eine Schleife versetzen, um den Arbeitssatz der angegebenen Prozess-ID regelmäßig alle 60 Sekunden zu löschen:

:loop
  mem_min 1234
  timeout 60
goto loop