如果你注意到你的Mac自从安装后性能似乎有了更多的反弹OS X小牛,这可能是因为内存管理的进步和内存压缩的回归。
本文信息适用于运行macOS Catalina(10.15)到OS X Mavericks(10.9)的mac。
Mac管理内存方式的更改
随着发布OS X小牛苹果改变了Mac管理内存的方式。通过增加内存压缩,你的Mac现在可以用更少的内存做更多的事情,同时保持或提高性能。在旧版本的OS X中,内存使用是围绕一个标准的内存管理系统构建的。应用程序请求分配内存,系统满足了要求,当应用程序不再需要内存时,将其归还。
的操作系统负责跟踪有多少RAM可用以及谁在使用它。当系统试图通过交换SSD或硬盘驱动器上的空间来使用虚拟RAM时,如果所需的RAM数量不可用,则会对Mac的性能产生不利影响。
什么是压缩内存?
压缩内存并不是苹果独有的新东西。长期以来,计算系统一直在使用各种形式的内存压缩。如果你在80年代中期和90年代早期使用Mac,你可能会记得像Connectix的RAM Doubler这样的产品,它压缩存储在RAM中的数据,有效地增加了Mac可用的空闲RAM的数量。
随着计算机制造商和操作系统开发者创造出更好的内存管理系统,压缩内存工具不再受欢迎。与此同时,内存价格下跌。另一个使内存压缩系统失去普及的因素是性能问题。内存压缩算法占用了大量的处理能力。虽然它们可以让你用更少的物理内存完成更多的工作,但当它们需要压缩或解压缩内存时,往往会让你的计算机陷入困境。
内存压缩正在卷土重来,主要是因为便宜的多核处理器的出现。当用于内存压缩的例程可以卸载到多个处理器核心中的一个时,当需要压缩或解压缩内存时,您不太可能注意到任何性能影响。它只是一个后台任务。
压缩内存在Mac上是如何工作的
Mac上的内存压缩允许更好地管理RAM资源,从而提高了操作系统和应用程序的性能。它还防止或显著减少了虚拟内存的使用,虚拟内存是对Mac驱动器中的数据进行分页。
在OS X Mavericks以及以后的版本中,OS会寻找非活动内存,即当前没有活跃使用的内存,但仍然保存着可以被应用程序使用的数据。非活动内存会压缩数据,所以数据占用的内存更少。非活动内存可以是在后台没有被使用的应用程序。一个例子是一个开放的文字处理器,但由于你正在休息,阅读有关压缩内存的内容而处于非活动状态。当你忙着浏览网页时,操作系统正在压缩文字处理器的内存,释放内存供其他应用程序使用。
什么时候发生内存压缩?
压缩过程并不是一直处于活动状态。相反,操作系统检查多少自由空间在RAM中可用。如果有大量的空闲内存,则不会发生压缩,即使有大量的非活动内存。
当空闲内存耗尽时,操作系统开始寻找要压缩的非活动内存。压缩从存储在内存中最早使用的数据开始,并继续确保有足够的可用空闲内存。当需要内存中压缩区域中的数据时,操作系统会动态地解压数据,并让请求它的应用程序可以使用这些数据。因为压缩和解压缩例程并发地运行在处理器核心,您不太可能在压缩或解压缩发生时经历任何性能损失。
mac电脑内存压缩的限制
压缩所能达到的效果是有限的。在某种程度上,如果你继续启动应用程序或使用占用内存的应用程序,你的Mac将没有足够的空闲空间来优化运行。就像过去一样,操作系统开始将不活跃的RAM数据交换到你的Mac硬盘。然而,对于内存压缩,这对于大多数用户来说可能是罕见的。
即使操作系统最终将内存交换到你的驱动器,OS X的内存管理系统通过将压缩数据写入完整长度的驱动器段来利用压缩的非活动内存,以提高性能和减少磨损ssd.
活动监视器和内存压缩
苹果提供了一个漂亮的工具活动监视器它可以监控Mac如何使用内存。虽然Activity Monitor仍然可用,但它的内存监控功能已经经历了戏剧性的变化,模仿了Mac通过使用压缩内存更好地利用RAM的方式。
你可以通过使用Activity monitor中的memory选项卡来监控Mac正在压缩的内存。压缩内存显示在memory Pressure图中,它表明操作系统在压缩RAM数据时的积极程度。图从绿色(压力小)变成黄色(压力大),最后变成红色,因为没有足够的RAM空间,内存必须被换到驱动器上。