无法了解MacOSX中的非活动内存


8

我以为我了解MacOSX如何管理内存,但是最近我对它的性能感到困惑。情况如下:

  1. 我有一个运行8个物理内存的全新Core i7系统,运行MacOSX 10.6.7。有些应用程序会定期运行,占用一些内存,例如Safari,Mail,Xcode,Terminal等。
  2. 我需要并行运行三个64位进程,每个进程使用大约2000M的实际内存。
  3. 尽管有线内存保持在1000M以下(即,我有超过7000M的进程可用空间),但我看到大量的分页活动导致启动的三个内存密集型进程的性能非常差。
  4. 显然,我没有用完可用的RAM,因为报告的不活动内存保持在2500M左右,并且活动内存没有超过5000M。

谁能给我一个线索,为什么MacOSX不会为需要它的进程释放不活动的内存,而是诉诸分页?另外,是否有任何适当的方法来影响系统的内存管理?


Answers:


5

我发现在我的机器上,Mac OS X调出正确的内容有点慢。

每当做任何特别耗费内存的事情时,我都会经常退出一些应用程序来帮助解决问题。Safari如果已经运行了一段时间,将是巨大的内存消耗,它是要退出的应用程序列表的顶部。就我而言,这是我尝试在没有足够实际RAM的情况下运行VMWare Fusion的时候。

您可能知道这一点,但是这里有一些指向Apple文档的链接,这些文档描述了OS X上的内存使用情况和虚拟内存:

http://support.apple.com/kb/ht1342

http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html

这里是给出的解释:不活动列表包含当前驻留在物理内存中但最近未访问过的页面。很难确切理解其含义,但似乎包括文件系统缓存以及实际的非活动内存。

在交互式GUI驱动的OS上,不活动的内存可能是一件很难处理的事情,在该操作系统上,用户可以选择随时切换到任何正在运行的应用程序,并且在这种情况下提供响应能力很重要.....但是,另一方面在像您这样的情况下,操作系统不太了解正确的做法是什么。

使用purge命令可以清除(部分)非活动内存。这可能需要通过安装CHUD工具进行安装,但是您可能已经安装了该工具。我没有尝试使用清除命令,所以YMMV ...

我闲逛了一段时间,可能已经回答也可能没有回答。将所有内容写完后,我在此站点上发现了另一个问题,其中许多相同的信息也可能有帮助。


谢谢!该purge命令正是我想要的。我已经在Apple的KB中找到了支持文章,但是它们并不是特别有用。
Ventzi Zhechev 2011年

1

MacOS 释放不活动的内存,但仅在确实需要时才释放。该“非活动内存”实际上可能是内核认为是分页的候选内存,但是它尚未决定,等待更多的时间而没有引用非活动内存(相反,它专注于分页内存)确实不太可能很快再次使用)。在这种情况下,“清除”不活动的内存实际上会导致性能下降(因为必须先从磁盘读回那些经常使用的页面,然后程序才能继续执行)。

purge对于开发人员模拟应用程序的启动条件很有用-例如,查看启动或长时间中断后首次运行应用程序需要多长时间。对于一般用户而言,purge它不是很有用(实际上会导致暂时的性能下降)。

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.