Supervise un proceso y elimínelo cuando exceda una cantidad determinada de RAM

Hay una fuga de memoria en StandardCollector.Service.exe de VS2015, que Microsoft reconoce, pero no se solucionará hasta el próximo Service Pack.

Entonces, mientras tanto, recibo una advertencia de Windows de que la memoria es baja y descubro que ha excedido los 7 GB de RAM y lo elimino. Me gustaría poder automatizar eso.

Requisitos:

  • Funciona en Windows.
  • Le permite especificar el proceso por ruta ejecutable.
  • Le permite especificar cuánta RAM debe exceder antes de ser eliminado.
  • Es gratis.

Hay una pregunta similar (sin respuesta) aquí: elija qué programa (s) deben eliminarse cuando se queda sin RAM , pero es diferente en el sentido de que no quiero esperar hasta que la memoria general del sistema se vuelva lenta, solo quiero monitorear la RAM de ese proceso .

También hay una pregunta en AskUbuntu que pregunta básicamente lo mismo , pero lo necesito para Windows, no para Linux.

Respuestas (1)

Puede intentar borrar el conjunto de trabajo en lugar de eliminar el proceso en sí.

Use EmptyWorkingSet() para borrar el uso de RAM de una aplicación o establezca su valor máximo usando SetProcessWorkingSetSize()

Tuve un problema similar, podría extender este programa que actualmente necesita la identificación del proceso en lugar de la ruta ejecutable y ponerlo en un bucle para borrar periódicamente el conjunto de trabajo de la identificación del proceso especificado cada 60 segundos:

:loop
  mem_min 1234
  timeout 60
goto loop