如何防止OSX分配尽可能多的虚拟内存,因为硬盘上有可用空间?


Answers:


1

我可以建议你这样做的一种方法,虽然它不完整。

您可以使用launchctl limit(请参见手册页)设置每个进程的内存限制。然而,这是每个过程而非系统范围。

在现实生活中,很少有进程消耗大量内存。因此,我建议您查看Activity Monitor输出,看看哪个过程消耗最多。计算使用超过20%RAM的那些。你有多少这样的过程?假设ñ并假设你已经中号 GB的RAM。您想要使用多少最大交换空间?假设小号 GB交换的。

我会做以下计算: (m + s - 1) / n = <max memory per process in GB>

将GB转换为B: <max memory per process in GB> * 1024 * 1024 * 1024 = <max mem per proc in B>

现在尝试此限制并查看它是否有效(请注意,此设置将在重新启动后丢失,因此执行起来是“安全的”):

sudo launchctl limit rss <max mem per proc in B> <max mem per proc in B + 1073741824>

如果您对此选择感到满意,那么您可以保存它们,因此它们是永久性的。编辑文件/etc/launchd.conf并添加:

limit rss <max mem per proc in B> <max mem per proc in B + 1073741824>

@bmike很抱歉,你不能把你的评论写在自己的答案或评论中吗?我不确定你使用的吨适合我的。虽然有价值,但我会要求你编辑撤消。随意添加它作为我的答案的评论或作为一个简单的答案。
惠更斯

只需单击编辑并还原我的更改 - 请注意,该网站对任何帖子的多个撰稿人都非常开放。我提出的是一个答案组件,而不是评论IMO,但我可能会复制你的话,并添加我的,如果这让你感觉更好。我认为你完成了大部分工作,并希望作者保留你的作品,但我愿意按原样离开你的作品并添加第二个答案。
bmike

我知道,我也确实将我的一些帖子设置为社区维基。但是这次我觉得我们的答案风格太不同了,感觉很尴尬。谢谢,我确实发现可以恢复变化!很棒的工具!
惠更斯

@Huygens有点困惑,从GB转换为字节时不应该有一个乘法吗?
FrancisLaclé188年

@FrancisLaclé确实!你是对的。我将编辑答案并更正。一个5岁以上的老臭虫;-)
惠更斯
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.