可能重复:
Mac OS X:什么在使用我的‘活动’内存?
我的活动监视器显示活动 RAM 使用量为 6GB:
然而,我的真实记忆栏却没有显示那么多金额:
(下面还有另一屏,都更小一些。)
支持这一点,此命令的输出(总结了每个正在运行的进程的内存使用情况):
ps -axm -o "rss,comm" | awk 'BEGIN { s=0;}; {s=s+$1;}; END { printf("%.2f GB\n", (s/1024.0/1024));}'
给出4.09GB
,所以在我看来泄漏了 2GB。有时我看到的范围要大得多,可能是命令中的 2 或 3GB,ps
而活动监视器报告的活动使用量则多达 7 或 8GB。
我尝试过退出所有程序,注销用户并重新登录,但活动使用量仍然远高于ps
每个进程向活动监视器报告的 RAM 量。除非我重新启动,否则这 2GB 的活动 RAM 基本上无法恢复。有什么方法可以 a) 检测泄漏的内容并 b) 将其恢复?
谢谢
答案1
它并没有泄漏,只是不值得为它免费而付出努力。您的系统不受内存限制,因此拥有更多可用内存不会带来任何好处。如果系统将其免费,那么它很可能永远不会被使用(在这种情况下,免费是浪费精力)或只是再次被使用(在这种情况下,免费是浪费精力)。
仅在非常有限的情况下才需要释放内存。并且您的系统有足够的释放内存来处理这些情况。
看这个答案详细解释为什么您需要尽可能少的可用 RAM。特别是这部分:
您一定在想“我想要空闲的 RAM,以便以后使用”。但现在比以前晚了。如果您现在使用它,以后也可以使用它。如果您现在不使用它,那么您将永远失去现在使用它的机会。以后永远不会到来——永远是现在。现在使用 RAM。不要把它留到以后,因为以后您也会想把它留到以后。
这不像 [在一台 8GB 的机器上] 如果你现在使用 4GB,以后可以使用 12GB。如果你现在使用 7GB,那么 1GB 就浪费了。你希望尽可能少的可用 RAM,这样你的系统就可以从你拥有的 RAM 中获得最大的好处。你不能节省 RAM。现在必须利用使用 RAM 的机会现在否则就会永远消失。
另请参阅这个答案有关 OSX 上“活动内存”的详细信息。