为什么我的MacBook Pro已经使用交换内存了?


21

我有一台2013年末的MacBook Pro 13“,内存为8 GB。最近,我的MacBook Pro拥有足够的可用内存时,使用交换内存。 Xcode打开它会使用99%的RAM,这是正常现象吗?

在此处输入图片说明


@Mark我将保持打开状态- 另一个问题不将交换作为症状。我认为这略有不同,足以保证某些额外的答案可能不适合链接的问题。
bmike

Answers:


18

这是正常现象。您在上面的屏幕截图中没有遇到任何内存问题。我怀疑正在发生的事情是OS X正在创建某种形式的占位符以启用交换内存,而不是在这里实际使用交换内存。我从未在交换内存部分看到零,除非我刚刚重新启动并重新打开了“活动监视器”窗口,即使那样,我也很少看到零。

使用Mavericks和Yosemite,操作系统使用内存的方式发生了一些变化。本质上,操作系统会占用所有内存,然后根据需要对其进行管理。因此,我们在“活动监视器”中查看内存报告的传统方式并不是真正有效。因此,Mavericks添加了“内存压力”表,以让您了解何时出现内存限制。在屏幕截图中,您的内存压力很大。有关更多信息,请参见此答案

Ars Technica在其Mavericks评论中对这种“内存压缩”有很好的描述:

http://arstechnica.com/apple/2013/10/os-x-10-9/17/


说得好。256 KB的交换是舍入错误,甚至可能只是占位符,以确保交换文件存在并已打开。如果系统用尽了文件句柄或资源,但稍后又创建并打开该文件,则可能会提高稳定性并从边缘情况中恢复。
bmike

2

根据我从您的屏幕快照中可以理解的内容(我不知道您的语言),您仅使用256KB的交换空间,这算什么。除非您的记忆力增强,否则我不会担心


现在,它的确为256KB,但如果有一些可用内存,则有时会使用120mb或更多。
2015年

我会说这是正常现象,我的Mac已经使用了将近6天,并且正在使用〜200MB的交换空间,并安装了16GB的RAM和24%的内存压力(绿色)
Brethil 2015年

@Bas当发现交换增长时,请提问。您可以运行vm_stat 60甚至300间隔一段时间,然后查看分页的外观,然后上传第二个活动监视器快照,以显示分页的情况。
bmike

0

创建交换文件时,您需要监视内存和交换使用情况,以便有机会了解创建交换的原因。根据您在文本和屏幕截图中所描述的内容,我什么都没看到。

关于为什么在您假定有可用RAM的情况下创建交换的原因。操作系统可以根据预测性措施进行交换。例如,也许您启动了Photoshop,其中有多个大型图像文件会从上一个会话中自动重新打开。操作系统可能会突然发现对RAM的巨大需求,并移动了一些未使用的RAM内容以提前交换预期的需求。

或者您的备份程序在后台短暂运行,并进行了大量的文件校验和比较,并创建了基于RAM的大型数据结构,从而促使其他内容进行交换。然后,备份程序释放了其RAM,然后返回睡眠状态。

Mac OS X(以及最现代的OS:Windows,Linux等)非常聪明,可以自动使用Cache,Swap,内存压缩和其他技术来使系统尽可能快地运行。除非您看到活动监视器报告内存压力在黄色或红色区域中,否则我真的不会为此担心。

我目前有一个2010年的13英寸MacBook Pro,它具有16GB的RAM。我要做大量的工作,这些工作非常占用RAM。(Web开发,数据挖掘,同时运行许多重型应用程序。)即使使用16GB,我有时但我不得不说这很少出现问题,因为Mac OS X非常擅长按需分配资源。

虽然我需要16GB的RAM用于工作,但您应该知道,这样的升级并非没有缺点。额外的RAM确实会显着减少活动使用和睡眠时的电池寿命。


-1

您的Mac运行在Unix(认证为Single Unix Specification 2003)上,并且该操作系统已经存在40多年了。核心组件(如内存管理)由本领域的权威专家编写,更新,调试和完善。拥有比美国财政部更多现金的苹果公司有能力聘请绝对最佳的人选。

因此,除非您至少具有理论计算机科学博士学位,并且撰写了有关内核级进程和内存管理的论文,否则就不必再担心内存管理了。我的桌面上有24Gb,但仍使用交换功能。这一点也不关我的事。


3
您是对的,但这不能回答我的问题。我并不是说制作操作系统的人不知道他们在做什么。我的问题是这是否是正常行为,我对为什么要这样做很感兴趣。因为它没有任何意义,我使用交换,如果仍有一定的可用内存..
巴斯

我的意思是,任何在幕后发生的事情都是正常的。除非由于绝对大量的交换而导致磁盘已满,否则应考虑原因是因为内存管理器决定需要这样做。
paul 2015年

1
这几乎是完全错误的。macOS中没有原始的Unix代码,它使用了* BSD和Mach部件,并且可能已经过POSIX认证。但是,VM Page管理几乎完全是Apples的代码,它们在最后发行版中通过修改它(例如添加vm_compression)而增加了很多不稳定性。同样,理论计算机科学并不关心这些非常实际的问题。他们最近开始从事OS开发。
sleeplessnerd

荒谬的答案。我确信他们有专家来开发整个产品,但仍然会发生错误,并且会导致很多错误。
chrismacp,
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.