如何限制任意进程可以占用多少RAM?


12

可以说我们有一台OS X机器运行4 GB的RAM。是否可以进行设置,以使单个进程不能占用超过3 GB的空间,因此,无论如何占用一个进程的内存,总会留有一些内存来保持系统的响应能力?


6
不,这会适得其反。并不是要围绕操作系统设计微观管理RAM分配。可用RAM浪费了RAM。OS X所谓的糟糕的RAM管理能力太多了。关闭活动监视器并继续生活可能是最好的补救方法。

8
@cksum您的评论中有很多假设,其中大多数都是错误的。我不是想让后座驱动器OS X进行内存管理。我实际上正在做的是试图找出是否有办法在测试一些很容易变成失控过程的代码时保留足够的系统功能。因为如果可用的RAM可以修复错误,那么可用的RAM不会浪费掉RAM。
Fomite 2012年

3
抱歉,但是如果您的问题与应用程序的编程,(开发和测试)有关,那么该论坛不适合您。请查看常见问题解答以获取有关属于哪种问题的更多信息:apple.stackexchange.com/faq

10
FFS,这不是编程问题。这是一个操作系统问题。限制任意进程可以使用的内存-Safari,Matlab,《使命召唤》,无论如何-在操作系统级别上无疑是一个操作系统问题。
Fomite 2012年

7
作为“苹果发烧友和高级用户”的网站,本质上与虚拟内存有关的问题显然是有问题的。即使开发相关,这对于调整或性能问题也将是有效的。
bmike

Answers:


9

在此处指出了与此类似的问题。如何限制Mac OS应用程序可以使用的RAM量?

他们建议使用ulimit命令,但是他们无法成功地将数量限制为所需的数量。我认为他们遇到的问题是,设置为-u或-v的选项不能解决内存分页系统的问题,例如,您只能为X的实际RAM中的进程分配X数量的空间,但是我们可以分页你整天都在虚拟内存中。

请注意,这可能是危险地禁用虚拟内存,这可能会导致您的Mac仅在运行RAM时锁定。

尝试使用参数-l,-m或-v运行ulimit,但是,如ulimit手册页中所述,如果不注意或不注意这些设置,则将其运行到OS。

ulimit:ulimit [-SHacdefilmnpqrstuvx] [limit]

修改外壳资源限制。

在允许进行此类控制的系统上,控制可用于外壳程序及其创建的进程的资源。

确实找不到任何确定的源来确认OS X是否忽略了ulimit,但是在引用的ulimit失败之后

如果您可以单独使用ulimit来满足您的需求,那么就试试吧,如果不结合使用ulimit和/或禁用虚拟内存,也许可以让您在选择的进程上设置3 GB的限制。仅供参考,这里是有关Snow Leopard System 10.6中完全禁用虚拟内存的更多信息的好链接

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

这看起来可能是正确的答案-下次运行此代码时,我会尝试一下。现在,接受答案。
Fomite 2012年

5

如果您在Mac上运行Lion(或更新的OSX)服务器,则可以在该Mac上的VM(VirtualBox,Parallels或VMWare等)中运行OSX。将VM限制为3GB的物理RAM,VM内的任何应用程序或进程也将受到限制。托管VM的系统应保持响应状态,即使VM中的OS受磁盘交换限制或崩溃。

如果您正在调试潜在的失控进程,则可以通过命令行进入调试器或调试块,然后将其记录下来,直到锁定为止。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.