为什么 Mac 即使内存充足,仍然会有交换内存占用?

2023-07-29 23:17:34 +08:00
 RiverTwilight

如题,最开始买来的时候没有这种情况,半个月后发现交换内存日常有在使用,请问这是正常的吗?为什么?

(听说长期使用交换内存会加快硬盘损耗)

4607 次点击
所在节点    macOS
15 条回复
longtzw
2023-07-29 23:35:20 +08:00
你是不是对充足有啥误解
mineralsalt
2023-07-29 23:41:26 +08:00
你这已经内存不足了, 操作系统肯定要提前考虑啊, 你总不会认为把物理内存用到 1kb 都不剩的时候才使用虚拟内存吧
mineralsalt
2023-07-29 23:50:41 +08:00
再补充一句吧, 不必杞人忧天, 虽然固态有写入寿命, 但是我用了这么多年, 从来没有把哪块硬盘写完了. 估计你也没有过. 网上见到的也很少, 大概率你的电脑被你淘汰了, 固态硬盘还活着呢! 正常用, 别瞎纠结
wang93wei
2023-07-30 00:26:47 +08:00
以下回答来自 CLAUDE:


现代操作系统开启 SWAP 的主要原因有以下几点:

1. 补充物理内存不足。当物理内存使用量接近上限时,系统会将部分不常用的内存内容交换到 SWAP 区,腾出物理内存来运行新的程序或加载更多数据。

2. 支持内存过 commit 。应用程序可能会申请比实际所需更多的内存,SWAP 可以作为内存过 commit 的缓冲区,避免物理内存使用量超过系统实际容量。

3. 支持内存休眠。系统可以将长时间不用的内存页交换出去,腾出更多物理内存给活跃进程使用。当需要那些页时再从 SWAP 调入。

4. 进程虚拟地址空间更大。进程可以申请超过系统物理内存大小的虚拟地址空间,SWAP 可以把部分不用的页换出,使进程可以获得更大的可用虚拟内存空间。

5. 增加系统故障容错性。如果没有 SWAP,一旦物理内存用尽,系统就可能直接崩溃。有了 SWAP,可以缓解这种情况。

6. 支持内存压缩。系统可以使用压缩算法,将内存内容压缩后存放到 SWAP,在需要时再解压,这样可以增加系统的整体内存容量。

综上所述,SWAP 的作用是对物理内存进行扩充和优化,让系统可以灵活、高效地使用内存资源,这对现代操作系统来说是非常重要的。

------------------------------------------------------------

想要完全避免 SWAP ,我建议直接顶配。
seanzxx
2023-07-30 02:27:58 +08:00
你这个明显物理内存已经不足了呀。
物理内存充足是这个样子的:
cloud2000
2023-07-30 09:52:27 +08:00
这是我的:

deplivesb
2023-07-30 10:31:06 +08:00
活动监视器-活动监视器-20230615-000053@2x
这才叫充足,你这个已经不够了
esrkforward
2023-07-30 11:21:02 +08:00
@wang93wei 请问您是怎么让 CLAUDE 用简中回答的?
RiverTwilight
2023-07-30 12:54:41 +08:00
@seanzxx 好奇你楼下那位朋友为啥也很充足,但是还有 12.9MB 占用啊
seanzxx
2023-07-30 13:59:06 +08:00
@RiverTwilight 他的内存已经用得差不多了,因为能看到 Compressed 有 1GB 多了。
macOS 管理内存三个步骤
1. 优先分配物理内存
2. 如果内存不够,尝试压缩不活跃的内容释放内存
3. 如果还是不够,启用交换内存
linshuangcom
2023-07-30 15:14:44 +08:00
可能是开了休眠模式吧,hibernatemode = 3 或 = 25 下,休眠后数据会存储在硬盘中
wang93wei
2023-07-30 16:32:17 +08:00
@esrkforward 说中文回的就是中文啊,,,
agagega
2023-07-30 19:50:06 +08:00
可能某个时刻内存占用峰值很高就会触发 swap ,等内存占用降下来以后,这些内存如果没有被活跃读写,就会继续留在 swap 里。在浏览器开了大量窗口的时候这种情况很常见
secondwtq
2023-07-30 23:56:30 +08:00
一般来说系统不会自动清除 swap 和 cache 的内存,swap/compressed 页只有在读取的时候才会重新换到 RAM 里(或者被 free 掉了),cache 只有在 RAM 塞满之后才会 evict 。
不是说“有”swap 会加快损耗,是 swap 频繁换入换出会,就一点 swap 然后一直放在那不读跟没有没啥区别(当然你可以较真一开始不是写了几 MB 么 ...)
还有现在 PC 固态一般是主控比颗粒坏得快,但是果子这边 M 系的特色是主控做进 SoC 里了,所以理论上没有这个单点的问题。果子的问题是本身 RAM 起步太少加配又太贵。你换个 16GB RAM 的 PC 一样有 swap 的,现在光看 Mac 内存日经贴还以为 swap 是 M 系果子第一个发明的似的 ...
beggarvip
2023-08-11 15:06:11 +08:00
请先了解一下*nix 的内存机制

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/960869

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX