V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
RiverTwilight
V2EX  ›  macOS

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

  •  
  •   RiverTwilight · 297 天前 · 3408 次点击
    这是一个创建于 297 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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


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

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

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

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

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

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

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

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

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

    想要完全避免 SWAP ,我建议直接顶配。
    seanzxx
        5
    seanzxx  
       297 天前   ❤️ 1
    你这个明显物理内存已经不足了呀。
    物理内存充足是这个样子的:
    cloud2000
        6
    cloud2000  
       297 天前
    这是我的:

    deplivesb
        7
    deplivesb  
       297 天前
    活动监视器-活动监视器-20230615-000053@2x
    这才叫充足,你这个已经不够了
    esrkforward
        8
    esrkforward  
       297 天前 via iPhone
    @wang93wei 请问您是怎么让 CLAUDE 用简中回答的?
    RiverTwilight
        9
    RiverTwilight  
    OP
       297 天前
    @seanzxx 好奇你楼下那位朋友为啥也很充足,但是还有 12.9MB 占用啊
    seanzxx
        10
    seanzxx  
       297 天前   ❤️ 1
    @RiverTwilight 他的内存已经用得差不多了,因为能看到 Compressed 有 1GB 多了。
    macOS 管理内存三个步骤
    1. 优先分配物理内存
    2. 如果内存不够,尝试压缩不活跃的内容释放内存
    3. 如果还是不够,启用交换内存
    linshuangcom
        11
    linshuangcom  
       297 天前
    可能是开了休眠模式吧,hibernatemode = 3 或 = 25 下,休眠后数据会存储在硬盘中
    wang93wei
        12
    wang93wei  
       297 天前
    @esrkforward 说中文回的就是中文啊,,,
    agagega
        13
    agagega  
       296 天前 via iPhone
    可能某个时刻内存占用峰值很高就会触发 swap ,等内存占用降下来以后,这些内存如果没有被活跃读写,就会继续留在 swap 里。在浏览器开了大量窗口的时候这种情况很常见
    secondwtq
        14
    secondwtq  
       296 天前
    一般来说系统不会自动清除 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
        15
    beggarvip  
       285 天前
    请先了解一下*nix 的内存机制
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2913 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 11:04 · PVG 19:04 · LAX 04:04 · JFK 07:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.