Aunque se puede limitar la memoria para aplicaciones específicas en macOS, usted no va a lograr el resultado que estás buscando:
El problema es que cuando se limita la cantidad de memoria de una aplicación puede tener, esto significa en la práctica el sentido de que los programas que se van a bloquearse cuando llegan a su límite.
Así que básicamente usted tiene la opción de tener estrellarse programas o haciendo una pausa cuando se alcance el límite. La pausa de ellos es algo que se tiene que implementar un programa para hacer usted mismo (no muy complejo, pero necesitaría algo de experiencia en programación o experiencia en programación).
En términos simples, los límites de la memoria no va a ayudar más que simplemente dejar de fumar uno o dos de aquellos cerdos cuando necesitas hacer algo más.
ACTUALIZACIÓN: En los comentarios que escribió que no le importa el chocar de las aplicaciones, y que usted es un experto ingeniero de software, por lo que sería capaz de hacer secuencias de comandos/programación de sí mismo.
En ese caso se puede aplicar un límite de memoria en una variedad de formas:
Versión más sencilla
La más sencilla sería la de crear un pequeño script que se ejecuta periódicamente ps x -o rss -p $PID | tail -n1
a observar el uso de la memoria del indicado proceso de IDENTIFICACIÓN. Esto le agarra el conjunto residente de tamaño, pero es posible que por alguna extraña razón quiere usar vsz
en lugar de rss
para obtener el vsize lugar.
Si los observamos el uso de la memoria está por encima de un umbral especificado, a continuación, puede terminar el proceso. La mejor manera de hacer esto sería para ejecutar un comando como kill -15 $PID
y, a continuación, después de un tiempo de ejecución kill -9 $PID
. La primera es SIGTERM, que narra el proceso de iniciar el cierre hacia abajo por sí mismo. El último es SIGKILL, que mata el proceso si éste se niega a cerrar por sí mismo.
Versión avanzada
Un poco más avanzada versión es crear un pequeño programa contenedor que se llama setrlimit()
establecer un límite en el proceso, como por ejemplo RLIMIT_DATA (datos máximo tamaño de segmento) o RLIMIT_RSS (máximo tamaño del conjunto residente). Después se necesita llamar a execl()
o similar para iniciar la aplicación para la que desee limitar el uso de memoria.
Tenga en cuenta que también hay una posibilidad de usar ulimit en lugar de rlimit, sin embargo, mi experiencia es que estos límites no se observan actual macOS.