如何限制应用程序在Linux内存使用情况?

我有一个封闭的源码软件,有一些内存泄漏问题。 有没有一个工具或解决scheme的“沙盒”进程在固定的内存量不使用“ulimit”(通用,我需要一个应用程序的内存控制)

实际上,'ulimit'是一个'per-application'控件。 ulimit shell命令是内置的shell,用于设置shell进程及其subprocess的限制。 把'ulimit'命令放在启动你的应用程序的脚本中,限制只会被设置为这个应用程序。

您可以使用像monit这样的进程pipe理守护进程监视您的进程使用的内存量,并在其超出定义的限制时重新启动它。

这听起来很激烈,但考虑到你的应用程序已知泄漏,根据其使用情况定期重新启动,这只是推迟了不可避免的,当进程大小超过较小的,机器物理内存或任何地址空间限制由您的操作系统。

使用cgroups。 https://www.kernel.org/doc/Documentation/cgroups/

请注意memory.limit_in_bytesmemory.memsw.limit_in_bytes之间的区别。 另请注意memory.soft_limit_in_byteshttps://www.kernel.org/doc/Documentation/cgroups/memory.txt