被压缩的内存
又称:压缩内存
简要回答
被压缩的内存是macOS为了腾出更多可用内存而压缩的内存数据。活动监视器以“被压缩”显示其总量,属于“已使用内存”的一部分。
内存紧张时,macOS会把最近没用过的内存压缩起来,而不是直接移到磁盘。压缩和解压通常比从启动磁盘读取快得多。
有一些被压缩的内存是正常的。“内存”标签页会显示总量,你也可以添加一列,查看每个进程有多少内存被压缩。
本页内容
被压缩的内存为什么高
“被压缩”的数值大,说明macOS不得不腾出空间。内存压力变黄往往就是这个原因。这是交换到磁盘之前的一步,说明App要求的内存已经超过了可用的内存。
如何查看哪个App的内存被压缩了
在“内存”标签页中,选取“显示”→“列”,添加“被压缩的内存”列。按它排序,就能看到哪些进程的压缩数据最多。这些往往是打开了很久却没在用的App。
“被压缩”数值实际衡量的是什么
活动监视器对“被压缩”的说明是:用于存储最近未使用数据的压缩版本的物理内存。所以这个数值是压缩后的数据在RAM中占用的空间,而不是数据解压后的大小。
里面的数据比“被压缩”数值更大。两者之差,就是macOS通过压缩腾出的内存。
Apple解释说,当Mac接近其最大内存容量时,内存中不活跃的App会被压缩,从而为你正在使用的App腾出更多内存。所以长时间留在后台的App往往持有最多的压缩内存,切换回其中一个时,也可能要等一会儿让它的数据解压。
压缩、交换与内存压力之间的关系
macOS分阶段应对内存不足。每个阶段都会在活动监视器的不同地方体现出来。
- 最近没用过的数据会被压缩并留在RAM中。“被压缩”数值会增长。
- 压缩也不够用时,macOS会把压缩后的数据移到启动磁盘上。“已使用的交换”会增长。
- 当App再次需要这些数据时,macOS会从磁盘读回并解压。如果这种情况频繁发生,Mac就会感觉变慢,内存压力会变成黄色或红色。
如何在“终端”中查看压缩内存
两个只读命令可以显示活动监视器所用的同样信息。比较存储量和占用量,就能知道你的数据压缩得怎么样。两者差距越大,内存压缩节省的空间就越多。
- 运行
top -l 1 | grep PhysMem。括号中的compressor数值,就是存放压缩数据的内存。 - 运行
vm_stat。Pages occupied by compressor是压缩数据在RAM中占用的空间。Pages stored in compressor是这些数据未压缩时的大小。任一个乘以第一行的页面大小,就能换算成字节。 - 运行
vm_stat 5,每5秒输出一行,按Control-C停止。第一行显示的是启动以来的总数,从第二行起,comprs和dcomprs列显示每个时间段内有多少页面被压缩和解压。
正常的与值得担心的压缩内存
正常:内存压力为绿色时,“被压缩”保持在稳定水平。macOS只是把旧数据以更小的形式保存着。即使在内存充足的Mac上,看到一些压缩内存也很常见,尤其是开机一段时间之后。
值得担心:“被压缩”一整天都在上升,“已使用的交换”也随之上升,内存压力经常是黄色或红色。对于你正在运行的东西来说,Mac的RAM不够了,所以要退出你没在用的App,或者少同时运行几个繁重的App。
常见问题
活动监视器中的“被压缩”是什么意思?
它是macOS为了腾出内存而压缩的内存量。
被压缩的内存是坏事吗?
不是。这是macOS避免使用磁盘的办法。如果被压缩的内存很多,同时内存压力为黄色或红色,就说明按你的工作量,这台Mac的内存不够用。
如何减少被压缩的内存?
退出不用的App。App退出后,它被压缩的内存就会释放。
压缩内存会让Mac变慢吗?
压缩和解压会占用一些处理器时间,但通常比从磁盘读取快得多。只有当Mac不得不持续压缩和交换时,你才会感觉到变慢,这时内存压力会显示为黄色或红色。
可以在Mac上关闭内存压缩吗?
“系统设置”中没有这个选项,你也不应该去动它。没有压缩,macOS就得更早动用磁盘,而磁盘更慢。
“VM被压缩”列是什么?
它是一个按进程显示的列,你可以在“内存”标签页中通过“显示”>“列”添加。它显示每个进程的内存中有多少已被压缩。
相关条目
分步指南:Chrome占用内存过多。
想找比活动监视器更好的工具?请看Mac上最好用的活动监视器替代品,或者浏览术语表中的所有条目。