非活动内存不是浪费资源吗?


87

我正在寻找有关我的计算机上的内存使用情况的说明,尤其是根据以下屏幕截图中的示例:

内存使用情况

我明白了什么是FreeActive手段
,但什么的意义WiredInactive

特别是inactive,为什么它为我们不使用的东西使用了如此多的内存?

Answers:


142

不活跃的记忆由于糟糕的名字而受到了可怕的说唱。它应该被称为“使Mac在第二,第三和第四次执行相同任务时真正快”内存,不过这也是一个糟糕的名字。

苹果在引入了一些新功能并添加了压缩内存后重新编写了活动监视器,因此其中一些不再适用于未显示“非活动内存”的macOS,但这仍然适用于对此记录的Mac OS X内存管理活动监视器的版本:https : //support.apple.com/zh-cn/HT201538

这是我向OS X上虚拟内存概念的新手解释的事情:

  • 有线:没有此数量的内存,系统将无法运行(从不交换)
  • 活动:程序现在或最近几秒钟确实正在使用此内存
  • 不活动:程序已从慢速磁盘或其他位置读取但不再需要的东西。工程师知道的更多,您将在几分钟后返回Facebook,或者在退出Word后重新启动Word。同一件事在计算机上一次又一次地发生。
  • 空闲:完全浪费的RAM-系统仅需要一个或两个MB的空闲空间即可满足短期分配请求。对于最大的分配,它只是通过将一些非活动RAM分配给活动/有线来使用,并删除有关其过去所拥有信息的信息。

当Free + Inactive少于总数的1/3时,就会出现问题,然后事情真的会变慢。

不活动的内存是奖励速度/双重任务RAM。它可以立即免费提供,但如果系统正确猜测并将某些内容保留在RAM中供您再次执行,则可以使重复的任务快得多,而且速度更快。它比交换内存快,因为它已经加载到RAM中,并在虚拟内存系统做出很好的猜测时加快了速度。

如果您想知道RAM是否有问题,而不是查看4个类别中的每一个类别(如果算上活动交换,则为5个类别),则可以将W + A与减慢新程序/任务的速度结合起来,将F + I与加快速度的程序结合起来。新程序/任务。您拥有的F + I越多,在RAM需要依靠交换来处理已分配的内存之前,您可以启动的新程序越多。

自从我上面提到过,您实际上并不需要知道交换的工作原理。基本上,当程序处于空闲状态且未使用数日(或数小时)时,系统会将该RAM写入硬盘驱动器,而不是终止程序。这使系统可以改组和处理与内存管理有关的各种事情,并使每个程序都无需相互讨论以同意在系统用尽时谁将使用较少的内存。

这是如何使用非活动RAM的真实示例。

  1. 退出所有应用程序,并确保我们登录时正在测试的两个应用程序未设置为自动启动
  2. 重新启动Mac
  3. 启动您的活动监视器,并观察整个内存
  4. 启动应用程序A所需的时间(MS Word将是一个不错的选择)
  5. 退出A
  6. 启动应用程序B所需的时间(Adobe也会有帮助)
  7. 退出B
  8. A的第二次发射需要多长时间
  9. 退出A
  10. 时间B的第二次发射。
  11. 时间A的第三次开始,B运行。

随着系统学习将这两个应用程序需要运行的内容保持在不活动的RAM中,您应该看到第二次/第三次启动的戏剧性加速。


在您的情况下-“有线”和“活动”的总数意味着可能会发生某些磁盘交换,并且Mac的速度不如以前快,因为您的非活动RAM不足以存储您可能需要重用的所有内容。如果您有快速的SSD驱动器,则此RAM分配是可以的,并且您可以将数据减少到接近F的总RAM的1/4,而不是开始减慢一旦RAM的不到1/2的F + I。 + I在看到明显的缓慢之前。这些指导原则是一般性的,您需要观察vm_stat 15或间隔一定的时间,以确保连续不断地进行中等容量的交换不会使Mac变慢。


9
哇,像我这样的新手,答案很完整。非常感谢,非常感谢:)
GusDeCooL 2012年

6
是的-我可以为所有人回答-一劳永逸,人们可以对其进行修改以使其变得更好,然后您就会得到答案。一个网站的好主意,人们可以来问一些有趣的问题。:-)
bmike

3
哇!漂亮的答案!
duci9y 2012年

3
我希望他们在我的OS课中像这样解释它。
styfle 2012年


6

这是多少的最重要的决定,如果你的Mac越来越记忆“强调”就是“出页面”的身影。在Mavericks的“活动监视器”中,该信息不再显示,它们现在在“交换已使用:”中显示信息。

页面输出意味着操作系统已确定没有足够的可用RAM来运行所请求的所有应用程序和进程。然后,它执行的操作是将其“分页”到它确定没有被主动使用的内存磁盘部分。这意味着RAM内存(快速)更改为HDD内存(慢速)。如果由于正在运行许多应用程序而导致这种情况发生的次数很多,并且用户正在应用程序之间切换,那么将会有很多页面输出和页面输入。

如果看到页面输出增加,则应该采取措施。


4

Mac上的问题是,除非我在命令窗口中进行手动清除,否则似乎永远不会清除“非活动”内存。它会不断累积,直到出现一个弹出窗口告诉我杀死应用程序为止。即使杀死了我所有的应用程序,我仍然有太多的不活动内存来运行任何东西。因此,在运行最新版本的Mountain Lion的Mac上,当可用内存不足时,非活动内存会被回收是不正确的。我在某个地方的某个应用程序锁定了一块永远不会释放的不活动内存,或者iOS中存在一个错误。(我有8GB的物理内存,应该足够了!)


2
我与您同在,Ernie ...在MacBook Pro和Mac Pro的Mac OS 10.6和10.7中,不活动的内存将逐渐增加,并且操作系统将开始交换(根据“ Page Ins”和“ Page Outs”),并且系统将停止爬行。非活动内存似乎永远不会被回收。我必须使用“清除”来回收不活动的内存,然后再次使我的系统活动。
埃里克

2
该弹出窗口从何而来?vm_stat发生时报告的内存状况如何?是什么使您如此确定“活动”中可能存在“过多”的非活动内存?就我而言,这是所有传闻,没有任何可支持的代码,实际上在内核中运行。
库巴·奥伯

2
您的内存分配看起来像Gus呈现的内容吗?在这里,我们谈论的是一个千兆字节的有线空间和一个千兆字节半的活动空间。在这种情况下,闲置/免费配给对我来说看起来不错。也许您会问第二个问题,详细说明发生问题的情况?
bmike

2

感谢所有的海报和评论者,这对我来说是一个很有启发性和有用的话题。我最近的经验可能对某人有用。我将Mac Mini与OS X10.8.1和16G RAM完全结合使用,以制作将在其他地方运行的原型软件。我可以向您保证,我不会“在几分钟后返回Facebook或退出它后重新启动Word”,而是在Macbook上执行。

我的任务是整理一大堆数据,I / O很耗时,所以概念是一次读取尽可能多的数据以进行夯实,在那里进行处理,然后将其写回到磁盘,然后重复该过程直至完成,这需要几个小时。我看到的是,每次读取新的数据块时,不活动的内存都会跳跃-我假设系统AI假设我可能想再次使用旧的块,而我不希望这样做-而免费的内存下降。

经过此过程的几次迭代后,可用内存减少到只有几MB,不活动的内存将释放更多的MB,然后最终在空闲和不活动的内存之间来回切换几分钟后,不活动的内存将释放一次增加几个GB。所有操作都如@bmike所述,vm_stat 15和“活动”监视器都显示0页。

除了可能不完全一样。有好几次情况一直在畅快地进行着,我下班去喝咖啡或晚餐,并且没有监视该过程,不应该发生的事情突然发生了,该过程突然中断了页面输出并减慢了速度。指出可能是我糟糕的代码导致了问题,但我希望我可以关闭不活动的内存只是为了消除这种可变性源。坏了吗 我完全不会这么说,但是我想我想我的用例没有对内存管理进行优化。


0

最近活动和退出的应用程序使用的非活动内存。如果用户想再次打开该程序,则OS X会将其保留。碰巧的是,OS X不需要重新定位内存以加快性能速度。如果您不重新打开程序,则一段时间后不活动的内存将被释放或重新放置。(c)

当您有大量的RAM时,此功能很酷,但如果不是,则很烦人。实际上,这全都与苹果相关。当您拥有功能强大的小工具或Mac时,一切都会变得很酷,但是当设备变旧时,所有功能都会使其变慢。

因此,您必须使用特殊的技巧来进行管理。

对于不活动的内存,有一个purge释放它的命令。


-3

基本上坏了。当可用RAM较低时,应该自动“清除”不活动的RAM。为以前打开的应用程序保留RAM的目的是什么,希望用户再次打开它?可用RAM不足的事实表明现有的ACTIVE应用程序可能没有足够的RAM,并且正在交换。为封闭的应用程序保留GB RAM仅是愚蠢的。根据苹果自己的描述,闲置RAM不足时应自动清除或借用不活动RAM。显然不是这样。


3
虚拟内存系统浪费了大量的可用RAM。当程序要求分配内存时,内核会组成更多的虚拟内存,然后像糖果一样分发出去。仅当程序用实际数据填充该内存时,系统才需要在RAM中为该操作腾出空间。这种“腾出空间”是从空闲的然后是不活动的内存中拉出的-释放不活动内存的延迟非常小。您描述的清除实际上就是发生的事情-只是意味着您暗示系统应该在系统懒惰时预先进行清除工作,并且只有在需要时才进行清除。
bmike

@bmike但是,难道不意味着当没有剩余的可用内存并且我启动一个新的应用程序时,不活动的内存部分会减少而活动的内存会增加吗?显然不是这种情况,并且根据我的经验,只要有数GB的不活动的ram,只要再没有可用的ram,系统就会变得非常慢。在考虑重新使用非活动内存之前,系统似乎更喜欢交换磁盘。
codingFriend1

4
@ codingFriend1让我们精确地说- vm_stat您认为有多少可用页面“没有更多可用RAM”?当Mac处于“慢速”状态时,页面输入和页面输出的作用是vm_stat 1什么?每当我在有问题的系统上观看此消息时,我都喜欢vm_stat 15在终端窗口中运行(或登录到文件系统),以便在确定是否/何时调优诸如传呼机。此示例具有100 MB的可用RAM,因此即使在页面压力较大的情况下也不太可能。
bmike

-4

本质上,不活动的内存使打开以前关闭的进程的速度更快。如果您发现Mac OS占用了过多的内存,那么您并不需要,例如在Safari或Chrome上打开的数十个选项卡中一样,只需在终端中使用“清除”命令即可。在OS X Mavericks中,只需使用“ sudo purge”(您需要输入密码)即可。当您需要再次打开某些东西时,它节省了宝贵的时间,但是如果您想玩RAM密集型游戏或打开RAM饥饿的应用程序,我绝对建议您使用purge命令。


2
这与其他答案有何不同?
user151019 2013年
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.